diff --git a/bottle.py b/bottle.py index 38a9732f2..ba6bfa8cc 100755 --- a/bottle.py +++ b/bottle.py @@ -65,7 +65,7 @@ def _cli_patch(cli_args): # pragma: no coverage _cli_patch(sys.argv) ############################################################################### -# Imports and Helpers used everywhere else ##################################### +# Imports and Helpers used everywhere else #################################### ############################################################################### import base64, calendar, email.utils, functools, hmac, itertools, \ @@ -226,7 +226,7 @@ class BottleException(Exception): pass ############################################################################### -# Routing ###################################################################### +# Routing ##################################################################### ############################################################################### @@ -564,7 +564,7 @@ def __repr__(self): return '<%s %s -> %s:%s>' % (self.method, self.rule, cb.__module__, cb.__name__) ############################################################################### -# Application Object ########################################################### +# Application Object ########################################################## ############################################################################### @@ -738,7 +738,7 @@ def mount(self, prefix, app, **options): application, install them separately. While it is possible to use path wildcards within the prefix path - (:class:`Bottle` childs only), it is highly discouraged. + (:class:`Bottle` children only), it is highly discouraged. The prefix path must end with a slash. If you want to access the root of the child application via `/prefix` in addition to @@ -1089,7 +1089,7 @@ def __setattr__(self, name, value): object.__setattr__(self, name, value) ############################################################################### -# HTTP and WSGI Tools ########################################################## +# HTTP and WSGI Tools ######################################################### ############################################################################### @@ -1895,7 +1895,7 @@ class LocalResponse(BaseResponse): class HTTPResponse(Response, BottleException): """ A subclass of :class:`Response` that can be raised or returned from request - handlers to short-curcuit request processing and override changes made to the + handlers to short-circuit request processing and override changes made to the global :data:`request` object. This bypasses error handlers, even if the status code indicates an error. Return or raise :class:`HTTPError` to trigger error handlers. @@ -1928,7 +1928,7 @@ def __init__(self, super(HTTPError, self).__init__(body, status, **more_headers) ############################################################################### -# Plugins ###################################################################### +# Plugins ##################################################################### ############################################################################### @@ -2044,7 +2044,7 @@ def load_module(self, fullname): return module ############################################################################### -# Common Utilities ############################################################# +# Common Utilities ############################################################ ############################################################################### @@ -2448,7 +2448,7 @@ def _make_overlay(self): share the same meta entries. Entries that were copied from the source are called 'virtual'. You - can not delete virtual keys, but overwrite them, which turns them + cannot delete virtual keys, but overwrite them, which turns them into non-virtual entries. Setting keys on an overlay never affects its source, but may affect any number of child overlays. @@ -2684,7 +2684,7 @@ def save(self, destination, overwrite=False, chunk_size=2 ** 16): self._copy_file(destination, chunk_size) ############################################################################### -# Application Helper ########################################################### +# Application Helper ########################################################## ############################################################################### @@ -2826,7 +2826,7 @@ def static_file(filename, root, return HTTPResponse(body, **headers) ############################################################################### -# HTTP Utilities and MISC (TODO) ############################################### +# HTTP Utilities and MISC (TODO) ############################################## ############################################################################### @@ -3092,7 +3092,7 @@ def wrapper(*a, **ka): ############################################################################### -# Multipart Handling ########################################################### +# Multipart Handling ########################################################## ############################################################################### # cgi.FieldStorage was deprecated in Python 3.11 and removed in 3.13 # This implementation is based on https://github.com/defnull/multipart/ @@ -3184,7 +3184,7 @@ def parse(self): else: raise MultipartError("Stream does not contain boundary") - # First line is termainating boundary -> empty multipart stream + # First line is terminating boundary -> empty multipart stream if line == terminator: for _ in lines: raise MultipartError("Found data after empty multipart stream") @@ -3339,7 +3339,7 @@ def close(self): self.file = False ############################################################################### -# Server Adapter ############################################################### +# Server Adapter ############################################################## ############################################################################### # Before you edit or add a server adapter, please read: @@ -3726,7 +3726,7 @@ def run(self, handler): } ############################################################################### -# Application Control ########################################################## +# Application Control ######################################################### ############################################################################### @@ -3919,7 +3919,7 @@ def __exit__(self, exc_type, *_): return exc_type is not None and issubclass(exc_type, KeyboardInterrupt) ############################################################################### -# Template Adapters ############################################################ +# Template Adapters ########################################################### ############################################################################### @@ -4419,7 +4419,7 @@ def wrapper(*args, **kwargs): jinja2_view = functools.partial(view, template_adapter=Jinja2Template) ############################################################################### -# Constants and Globals ######################################################## +# Constants and Globals ####################################################### ############################################################################### TEMPLATE_PATH = ['./', './views/'] diff --git a/docs/_locale/README.txt b/docs/_locale/README.txt index 9641e5bce..b2b5bee7e 100644 --- a/docs/_locale/README.txt +++ b/docs/_locale/README.txt @@ -1,8 +1,8 @@ Translation Workflow ==================== -If documentation changed, run `make push` to push new messages to transiflex (manager account required). +If documentation changed, run `make push` to push new messages to transifex (manager account required). To update the local translation files, call `make pull` and commit the changes from time to time (manager account required). -Go to https://www.transifex.com/bottle for actually translating stuff. You can du that with a normal user account at transiflex. +Go to https://www.transifex.com/bottle for actually translating stuff. You can du that with a normal user account at transifex. diff --git a/docs/_locale/_pot/api.pot b/docs/_locale/_pot/api.pot index 8adbc9dd8..93fc1ca2c 100644 --- a/docs/_locale/_pot/api.pot +++ b/docs/_locale/_pot/api.pot @@ -394,7 +394,7 @@ msgid "Current value of the 'Content-Length' header." msgstr "" #: ../../../bottle.py:docstring of bottle.FileUpload.get_header:1 -msgid "Return the value of a header within the mulripart part." +msgid "Return the value of a header within the multipart part." msgstr "" #: ../../../bottle.py:docstring of bottle.FileUpload.filename:1 @@ -510,7 +510,7 @@ msgid "Plugins from the parent application are not applied to the routes of the msgstr "" #: ../../../bottle.py:docstring of bottle.Bottle.mount:13 -msgid "While it is possible to use path wildcards within the prefix path (:class:`Bottle` childs only), it is highly discouraged." +msgid "While it is possible to use path wildcards within the prefix path (:class:`Bottle` children only), it is highly discouraged." msgstr "" #: ../../../bottle.py:docstring of bottle.Bottle.mount:16 diff --git a/docs/_locale/_pot/changelog.pot b/docs/_locale/_pot/changelog.pot index 7efc38924..996567df8 100644 --- a/docs/_locale/_pot/changelog.pot +++ b/docs/_locale/_pot/changelog.pot @@ -369,7 +369,7 @@ msgid ":meth:`Bottle.mount` parameter order changed." msgstr "" #: ../../changelog.rst:147 -msgid ":meth:`Bottle.route` now accpets an import string for the ``callback`` parameter." +msgid ":meth:`Bottle.route` now accepts an import string for the ``callback`` parameter." msgstr "" #: ../../changelog.rst:148 diff --git a/docs/_locale/_pot/configuration.pot b/docs/_locale/_pot/configuration.pot index e268ed07d..d839d2283 100644 --- a/docs/_locale/_pot/configuration.pot +++ b/docs/_locale/_pot/configuration.pot @@ -157,7 +157,7 @@ msgid "Load values from a Python module." msgstr "" #: ../../../bottle.py:docstring of bottle.ConfigDict.load_module:3 -msgid "Example modue ``config.py``::" +msgid "Example module ``config.py``::" msgstr "" #: ../../../bottle.py:docstring of bottle.ConfigDict.load_module:0 diff --git a/docs/_locale/_pot/deployment.pot b/docs/_locale/_pot/deployment.pot index 35712d06d..01724c6bf 100644 --- a/docs/_locale/_pot/deployment.pot +++ b/docs/_locale/_pot/deployment.pot @@ -161,7 +161,7 @@ msgid "waitress_" msgstr "" #: ../../deployment.rst:69 -msgid "Multi-threaded, poweres Pyramid" +msgid "Multi-threaded, powers Pyramid" msgstr "" #: ../../deployment.rst:70 diff --git a/docs/_locale/_pot/development.pot b/docs/_locale/_pot/development.pot index 7f654d1e3..bd9f7cd3d 100644 --- a/docs/_locale/_pot/development.pot +++ b/docs/_locale/_pot/development.pot @@ -97,7 +97,7 @@ msgid "Minor Release (x.y)" msgstr "" #: ../../development.rst:40 -msgid "The minor release number is increased on updates that change the API or behaviour in some way. You might get some depreciation warnings any may have to tweak some configuration settings to restore the old behaviour, but in most cases these changes are designed to be backward compatible for at least one minor release. You should update to stay up do date, but don't have to. An exception is 0.8, which *will* break backward compatibility hard. (This is why 0.7 was skipped). Sorry about that." +msgid "The minor release number is increased on updates that change the API or behaviour in some way. You might get some deprecation warnings any may have to tweak some configuration settings to restore the old behaviour, but in most cases these changes are designed to be backward compatible for at least one minor release. You should update to stay up do date, but don't have to. An exception is 0.8, which *will* break backward compatibility hard. (This is why 0.7 was skipped). Sorry about that." msgstr "" #: ../../development.rst:43 @@ -185,7 +185,7 @@ msgid "**Test:** Write tests to prove that your code works as expected and does msgstr "" #: ../../development.rst:83 -msgid "**One patch at a time:** Only fix one bug or add one feature at a time. Design your patches so that they can be applyed as a whole. Keep your patches clean, small and focused." +msgid "**One patch at a time:** Only fix one bug or add one feature at a time. Design your patches so that they can be applied as a whole. Keep your patches clean, small and focused." msgstr "" #: ../../development.rst:84 diff --git a/docs/_locale/_pot/faq.pot b/docs/_locale/_pot/faq.pot index 9e1fc9ace..94ac7a974 100644 --- a/docs/_locale/_pot/faq.pot +++ b/docs/_locale/_pot/faq.pot @@ -53,7 +53,7 @@ msgid "Dynamic Routes and Slashes" msgstr "" #: ../../faq.rst:40 -msgid "In :ref:`dynamic route syntax `, a placeholder token (````) matches everything up to the next slash. This equals to ``[^/]+`` in regular expression syntax. To accept slashes too, you have to add a custom regular pattern to the placeholder. An example: ``/images/`` would match ``/images/icons/error.png`` but ``/images/`` won't." +msgid "In :ref:`dynamic route syntax `, a placeholder token (````) matches everything up to the next slash. This equals ``[^/]+`` in regular expression syntax. To accept slashes too, you have to add a custom regular pattern to the placeholder. An example: ``/images/`` would match ``/images/icons/error.png`` but ``/images/`` won't." msgstr "" #: ../../faq.rst:43 diff --git a/docs/_locale/_pot/recipes.pot b/docs/_locale/_pot/recipes.pot index f65670670..f858c3e1e 100644 --- a/docs/_locale/_pot/recipes.pot +++ b/docs/_locale/_pot/recipes.pot @@ -214,7 +214,7 @@ msgid "Using Bottle with Heroku" msgstr "" #: ../../recipes.rst:263 -msgid "Heroku_, a popular cloud application platform now provides support for running Python applications on their infastructure." +msgid "Heroku_, a popular cloud application platform now provides support for running Python applications on their infrastructure." msgstr "" #: ../../recipes.rst:266 diff --git a/docs/_locale/_pot/tutorial_app.pot b/docs/_locale/_pot/tutorial_app.pot index 22dc44d4e..83970ad62 100644 --- a/docs/_locale/_pot/tutorial_app.pot +++ b/docs/_locale/_pot/tutorial_app.pot @@ -97,7 +97,7 @@ msgid "Further Software Necessities" msgstr "" #: ../../tutorial_app.rst:63 -msgid "As we use SQLite3 as a database, make sure it is installed. On Linux systems, most distributions have SQLite3 installed by default. SQLite is available for Windows and MacOS X as well and the `sqlite3` module is part of the python standard library." +msgid "As we use SQLite3 as a database, make sure it is installed. On Linux systems, most distributions have SQLite3 installed by default. SQLite is available for Windows and macOS as well and the `sqlite3` module is part of the python standard library." msgstr "" #: ../../tutorial_app.rst:66 diff --git a/docs/_locale/de_DE/LC_MESSAGES/api.po b/docs/_locale/de_DE/LC_MESSAGES/api.po index b74b64040..fd8247d57 100644 --- a/docs/_locale/de_DE/LC_MESSAGES/api.po +++ b/docs/_locale/de_DE/LC_MESSAGES/api.po @@ -480,7 +480,7 @@ msgid "Current value of the 'Content-Length' header." msgstr "" #: ../../../bottle.pydocstring of bottle.FileUpload.get_header:1 -msgid "Return the value of a header within the mulripart part." +msgid "Return the value of a header within the multipart part." msgstr "" #: ../../../bottle.pydocstring of bottle.FileUpload.filename:1 @@ -621,7 +621,7 @@ msgstr "" #: ../../../bottle.pydocstring of bottle.Bottle.mount:13 msgid "" "While it is possible to use path wildcards within the prefix path " -"(:class:`Bottle` childs only), it is highly discouraged." +"(:class:`Bottle` children only), it is highly discouraged." msgstr "" #: ../../../bottle.pydocstring of bottle.Bottle.mount:16 diff --git a/docs/_locale/de_DE/LC_MESSAGES/changelog.po b/docs/_locale/de_DE/LC_MESSAGES/changelog.po index ba06f2437..0d3ba8bd1 100644 --- a/docs/_locale/de_DE/LC_MESSAGES/changelog.po +++ b/docs/_locale/de_DE/LC_MESSAGES/changelog.po @@ -495,7 +495,7 @@ msgstr "" #: ../../changelog.rst:147 msgid "" -":meth:`Bottle.route` now accpets an import string for the ``callback`` " +":meth:`Bottle.route` now accepts an import string for the ``callback`` " "parameter." msgstr "" diff --git a/docs/_locale/de_DE/LC_MESSAGES/configuration.po b/docs/_locale/de_DE/LC_MESSAGES/configuration.po index 82d4326f4..899d25c8d 100644 --- a/docs/_locale/de_DE/LC_MESSAGES/configuration.po +++ b/docs/_locale/de_DE/LC_MESSAGES/configuration.po @@ -223,7 +223,7 @@ msgid "Load values from a Python module." msgstr "" #: ../../../bottle.pydocstring of bottle.ConfigDict.load_module:3 -msgid "Example modue ``config.py``::" +msgid "Example module ``config.py``::" msgstr "" #: ../../../bottle.pydocstring of bottle.ConfigDict.load_module:0 diff --git a/docs/_locale/de_DE/LC_MESSAGES/deployment.po b/docs/_locale/de_DE/LC_MESSAGES/deployment.po index 5d811397a..93ae8c466 100644 --- a/docs/_locale/de_DE/LC_MESSAGES/deployment.po +++ b/docs/_locale/de_DE/LC_MESSAGES/deployment.po @@ -201,7 +201,7 @@ msgid "waitress_" msgstr "" #: ../../deployment.rst:69 -msgid "Multi-threaded, poweres Pyramid" +msgid "Multi-threaded, powers Pyramid" msgstr "" #: ../../deployment.rst:70 diff --git a/docs/_locale/de_DE/LC_MESSAGES/development.po b/docs/_locale/de_DE/LC_MESSAGES/development.po index 2bafd3730..efebad39c 100644 --- a/docs/_locale/de_DE/LC_MESSAGES/development.po +++ b/docs/_locale/de_DE/LC_MESSAGES/development.po @@ -125,7 +125,7 @@ msgid "" " in at least the two latest minor releases and announced in all available " "channels (mailinglist, twitter, github). Non-critical bugs or features are " "not guaranteed to be backported. This may change in the future, through." -msgstr "Die Bottle Versionsnummer ist in drei Teile unterteilt (**major.minor.revision**). Diese werden *nicht* dazu genutzt um neue Funktionen zu bewerben, sondern um wichtige bug-fixes und/oder Änderungen an der API zu indizieren. Kritische Fehler werden in den letzten zwei stabilen Veröffentlichungen behoben und über alle Kanäle mitgeteilt (Mailinglisten, Twitter, Github). Nicht kritische Fehler oder Features werden garantiert zurückgestellt. Dies wird sich eventuell in der Zukunft ändern. " +msgstr "Die Bottle Versionsnummer ist in drei Teile unterteilt (**major.minor.revision**). Diese werden *nicht* dazu genutzt um neue Funktionen zu bewerben, sondern um wichtige bug-fixes und/oder Änderungen an der API zu indizieren. Kritische Fehler werden in den letzten zwei stabilen Veröffentlichungen behoben und über alle Kanäle mitgeteilt (Mailinglisten, Twitter, GitHub). Nicht kritische Fehler oder Features werden garantiert zurückgestellt. Dies wird sich eventuell in der Zukunft ändern. " #: ../../development.rst:37 msgid "Major Release (x.0)" @@ -283,7 +283,7 @@ msgstr "**Test:** Schreibe Tests um nachzuweisen dass dein Code wie geplant funk #: ../../development.rst:83 msgid "" "**One patch at a time:** Only fix one bug or add one feature at a time. " -"Design your patches so that they can be applyed as a whole. Keep your " +"Design your patches so that they can be applied as a whole. Keep your " "patches clean, small and focused." msgstr "**Ein Patch zur selben Zeit:** Behebe nur einen Fehler oder füge nur ein Feature zur selben Zeit hinzu. Entwickle deine Patches so, dass sie als Ganzes angewendet werden können. Halte deine Patches sauber, klein und fokussiert." @@ -314,7 +314,7 @@ msgid "" "The following examples assume that you have an (free) `github account " "`_. This is not mandatory, but makes things a lot " "easier." -msgstr "Die folgenden Beispiele nehmen an dass du einen (kostnelosen) `Github Account `_ besitzt. Dies ist nicht notwendig, erleichtert die Dinge jedoch sehr." +msgstr "Die folgenden Beispiele nehmen an dass du einen (kostnelosen) `GitHub Account `_ besitzt. Dies ist nicht notwendig, erleichtert die Dinge jedoch sehr." #: ../../development.rst:125 msgid "" @@ -386,7 +386,7 @@ msgstr "Dies ist gleichbedeutend mit der Rückgängigmachung all deiner Änderun msgid "" "Now you are almost ready to send a pull request. But first you need to make " "your feature-branch public by pushing it to your github fork::" -msgstr "Jetzt bist du beinahe bereit ein pull-request zu senden. Aber als ersten muss du deinen Feature-Branch öffentlich machen indem du ihn in deine Github-Fork pushst. " +msgstr "Jetzt bist du beinahe bereit ein pull-request zu senden. Aber als ersten muss du deinen Feature-Branch öffentlich machen indem du ihn in deine GitHub-Fork pushst. " #: ../../development.rst:160 msgid "" @@ -395,7 +395,7 @@ msgid "" "be to start a thread in the mailing-list, which is recommended. It allows " "other developers to see and discuss your patches and you get some feedback " "for free :)" -msgstr "Nachdem du deinen commit gepusht hast musst du uns über das neue Feature informieren. Eine Möglichkeit ist, ein pull-request über Github zu senden. Eine Andere wäre, einen neuen Thread in der Mailingliste zu starten, was empfohlen wird. Es erlaubt anderen Entwicklern deine Patches zu sehen und zu diskutieren und du bekommst gratis Feedback :)" +msgstr "Nachdem du deinen commit gepusht hast musst du uns über das neue Feature informieren. Eine Möglichkeit ist, ein pull-request über GitHub zu senden. Eine Andere wäre, einen neuen Thread in der Mailingliste zu starten, was empfohlen wird. Es erlaubt anderen Entwicklern deine Patches zu sehen und zu diskutieren und du bekommst gratis Feedback :)" #: ../../development.rst:162 msgid "" diff --git a/docs/_locale/de_DE/LC_MESSAGES/faq.po b/docs/_locale/de_DE/LC_MESSAGES/faq.po index 4a9a7c1b1..e5e4b8ccb 100644 --- a/docs/_locale/de_DE/LC_MESSAGES/faq.po +++ b/docs/_locale/de_DE/LC_MESSAGES/faq.po @@ -69,7 +69,7 @@ msgstr "Dynamische Routen und Schrägstriche" #: ../../faq.rst:40 msgid "" "In :ref:`dynamic route syntax `, a placeholder " -"token (````) matches everything up to the next slash. This equals to " +"token (````) matches everything up to the next slash. This equals " "``[^/]+`` in regular expression syntax. To accept slashes too, you have to " "add a custom regular pattern to the placeholder. An example: " "``/images/`` would match ``/images/icons/error.png`` but " diff --git a/docs/_locale/de_DE/LC_MESSAGES/recipes.po b/docs/_locale/de_DE/LC_MESSAGES/recipes.po index 95fda3f5c..a90db8791 100644 --- a/docs/_locale/de_DE/LC_MESSAGES/recipes.po +++ b/docs/_locale/de_DE/LC_MESSAGES/recipes.po @@ -288,7 +288,7 @@ msgstr "" #: ../../recipes.rst:263 msgid "" "Heroku_, a popular cloud application platform now provides support for " -"running Python applications on their infastructure." +"running Python applications on their infrastructure." msgstr "" #: ../../recipes.rst:266 diff --git a/docs/_locale/de_DE/LC_MESSAGES/tutorial_app.po b/docs/_locale/de_DE/LC_MESSAGES/tutorial_app.po index da30114c3..f21a7ac64 100644 --- a/docs/_locale/de_DE/LC_MESSAGES/tutorial_app.po +++ b/docs/_locale/de_DE/LC_MESSAGES/tutorial_app.po @@ -139,7 +139,7 @@ msgstr "" msgid "" "As we use SQLite3 as a database, make sure it is installed. On Linux " "systems, most distributions have SQLite3 installed by default. SQLite is " -"available for Windows and MacOS X as well and the `sqlite3` module is part " +"available for Windows and macOS as well and the `sqlite3` module is part " "of the python standard library." msgstr "" diff --git a/docs/_locale/fr/LC_MESSAGES/api.po b/docs/_locale/fr/LC_MESSAGES/api.po index 851a68b4a..f8d09bcd0 100644 --- a/docs/_locale/fr/LC_MESSAGES/api.po +++ b/docs/_locale/fr/LC_MESSAGES/api.po @@ -478,7 +478,7 @@ msgid "Current value of the 'Content-Length' header." msgstr "" #: ../../../bottle.pydocstring of bottle.FileUpload.get_header:1 -msgid "Return the value of a header within the mulripart part." +msgid "Return the value of a header within the multipart part." msgstr "" #: ../../../bottle.pydocstring of bottle.FileUpload.filename:1 @@ -619,7 +619,7 @@ msgstr "" #: ../../../bottle.pydocstring of bottle.Bottle.mount:13 msgid "" "While it is possible to use path wildcards within the prefix path " -"(:class:`Bottle` childs only), it is highly discouraged." +"(:class:`Bottle` children only), it is highly discouraged." msgstr "" #: ../../../bottle.pydocstring of bottle.Bottle.mount:16 diff --git a/docs/_locale/fr/LC_MESSAGES/changelog.po b/docs/_locale/fr/LC_MESSAGES/changelog.po index f83135473..f00b9ddff 100644 --- a/docs/_locale/fr/LC_MESSAGES/changelog.po +++ b/docs/_locale/fr/LC_MESSAGES/changelog.po @@ -495,7 +495,7 @@ msgstr "" #: ../../changelog.rst:147 msgid "" -":meth:`Bottle.route` now accpets an import string for the ``callback`` " +":meth:`Bottle.route` now accepts an import string for the ``callback`` " "parameter." msgstr "" diff --git a/docs/_locale/fr/LC_MESSAGES/configuration.po b/docs/_locale/fr/LC_MESSAGES/configuration.po index 829984a80..4c91eb5c9 100644 --- a/docs/_locale/fr/LC_MESSAGES/configuration.po +++ b/docs/_locale/fr/LC_MESSAGES/configuration.po @@ -223,7 +223,7 @@ msgid "Load values from a Python module." msgstr "" #: ../../../bottle.pydocstring of bottle.ConfigDict.load_module:3 -msgid "Example modue ``config.py``::" +msgid "Example module ``config.py``::" msgstr "" #: ../../../bottle.pydocstring of bottle.ConfigDict.load_module:0 diff --git a/docs/_locale/fr/LC_MESSAGES/deployment.po b/docs/_locale/fr/LC_MESSAGES/deployment.po index 13adf2fe0..c37100f65 100644 --- a/docs/_locale/fr/LC_MESSAGES/deployment.po +++ b/docs/_locale/fr/LC_MESSAGES/deployment.po @@ -202,7 +202,7 @@ msgid "waitress_" msgstr "" #: ../../deployment.rst:69 -msgid "Multi-threaded, poweres Pyramid" +msgid "Multi-threaded, powers Pyramid" msgstr "" #: ../../deployment.rst:70 diff --git a/docs/_locale/fr/LC_MESSAGES/development.po b/docs/_locale/fr/LC_MESSAGES/development.po index 99431ef19..fc07f7b83 100644 --- a/docs/_locale/fr/LC_MESSAGES/development.po +++ b/docs/_locale/fr/LC_MESSAGES/development.po @@ -145,7 +145,7 @@ msgstr "" #: ../../development.rst:40 msgid "" "The minor release number is increased on updates that change the API or " -"behaviour in some way. You might get some depreciation warnings any may have" +"behaviour in some way. You might get some deprecation warnings any may have" " to tweak some configuration settings to restore the old behaviour, but in " "most cases these changes are designed to be backward compatible for at least" " one minor release. You should update to stay up do date, but don't have to." @@ -282,7 +282,7 @@ msgstr "" #: ../../development.rst:83 msgid "" "**One patch at a time:** Only fix one bug or add one feature at a time. " -"Design your patches so that they can be applyed as a whole. Keep your " +"Design your patches so that they can be applied as a whole. Keep your " "patches clean, small and focused." msgstr "" diff --git a/docs/_locale/fr/LC_MESSAGES/faq.po b/docs/_locale/fr/LC_MESSAGES/faq.po index 0b4edb420..2e8e7436f 100644 --- a/docs/_locale/fr/LC_MESSAGES/faq.po +++ b/docs/_locale/fr/LC_MESSAGES/faq.po @@ -67,7 +67,7 @@ msgstr "" #: ../../faq.rst:40 msgid "" "In :ref:`dynamic route syntax `, a placeholder " -"token (````) matches everything up to the next slash. This equals to " +"token (````) matches everything up to the next slash. This equals " "``[^/]+`` in regular expression syntax. To accept slashes too, you have to " "add a custom regular pattern to the placeholder. An example: " "``/images/`` would match ``/images/icons/error.png`` but " diff --git a/docs/_locale/fr/LC_MESSAGES/recipes.po b/docs/_locale/fr/LC_MESSAGES/recipes.po index 2d5a1d6b5..572ee01f5 100644 --- a/docs/_locale/fr/LC_MESSAGES/recipes.po +++ b/docs/_locale/fr/LC_MESSAGES/recipes.po @@ -288,7 +288,7 @@ msgstr "" #: ../../recipes.rst:263 msgid "" "Heroku_, a popular cloud application platform now provides support for " -"running Python applications on their infastructure." +"running Python applications on their infrastructure." msgstr "" #: ../../recipes.rst:266 diff --git a/docs/_locale/fr/LC_MESSAGES/tutorial_app.po b/docs/_locale/fr/LC_MESSAGES/tutorial_app.po index ac418c1ab..b94320e2f 100644 --- a/docs/_locale/fr/LC_MESSAGES/tutorial_app.po +++ b/docs/_locale/fr/LC_MESSAGES/tutorial_app.po @@ -139,7 +139,7 @@ msgstr "" msgid "" "As we use SQLite3 as a database, make sure it is installed. On Linux " "systems, most distributions have SQLite3 installed by default. SQLite is " -"available for Windows and MacOS X as well and the `sqlite3` module is part " +"available for Windows and macOS as well and the `sqlite3` module is part " "of the python standard library." msgstr "" diff --git a/docs/_locale/ja_JP/LC_MESSAGES/api.po b/docs/_locale/ja_JP/LC_MESSAGES/api.po index 767546daa..222103fe0 100644 --- a/docs/_locale/ja_JP/LC_MESSAGES/api.po +++ b/docs/_locale/ja_JP/LC_MESSAGES/api.po @@ -478,7 +478,7 @@ msgid "Current value of the 'Content-Length' header." msgstr "" #: ../../../bottle.pydocstring of bottle.FileUpload.get_header:1 -msgid "Return the value of a header within the mulripart part." +msgid "Return the value of a header within the multipart part." msgstr "" #: ../../../bottle.pydocstring of bottle.FileUpload.filename:1 @@ -619,7 +619,7 @@ msgstr "" #: ../../../bottle.pydocstring of bottle.Bottle.mount:13 msgid "" "While it is possible to use path wildcards within the prefix path " -"(:class:`Bottle` childs only), it is highly discouraged." +"(:class:`Bottle` children only), it is highly discouraged." msgstr "" #: ../../../bottle.pydocstring of bottle.Bottle.mount:16 diff --git a/docs/_locale/ja_JP/LC_MESSAGES/changelog.po b/docs/_locale/ja_JP/LC_MESSAGES/changelog.po index 560af4b5f..5b5df8b62 100644 --- a/docs/_locale/ja_JP/LC_MESSAGES/changelog.po +++ b/docs/_locale/ja_JP/LC_MESSAGES/changelog.po @@ -495,7 +495,7 @@ msgstr "" #: ../../changelog.rst:147 msgid "" -":meth:`Bottle.route` now accpets an import string for the ``callback`` " +":meth:`Bottle.route` now accepts an import string for the ``callback`` " "parameter." msgstr "" diff --git a/docs/_locale/ja_JP/LC_MESSAGES/configuration.po b/docs/_locale/ja_JP/LC_MESSAGES/configuration.po index fccaa8dcd..41a712f5d 100644 --- a/docs/_locale/ja_JP/LC_MESSAGES/configuration.po +++ b/docs/_locale/ja_JP/LC_MESSAGES/configuration.po @@ -223,7 +223,7 @@ msgid "Load values from a Python module." msgstr "" #: ../../../bottle.pydocstring of bottle.ConfigDict.load_module:3 -msgid "Example modue ``config.py``::" +msgid "Example module ``config.py``::" msgstr "" #: ../../../bottle.pydocstring of bottle.ConfigDict.load_module:0 diff --git a/docs/_locale/ja_JP/LC_MESSAGES/deployment.po b/docs/_locale/ja_JP/LC_MESSAGES/deployment.po index a3724abf0..f663cf103 100644 --- a/docs/_locale/ja_JP/LC_MESSAGES/deployment.po +++ b/docs/_locale/ja_JP/LC_MESSAGES/deployment.po @@ -201,7 +201,7 @@ msgid "waitress_" msgstr "" #: ../../deployment.rst:69 -msgid "Multi-threaded, poweres Pyramid" +msgid "Multi-threaded, powers Pyramid" msgstr "" #: ../../deployment.rst:70 diff --git a/docs/_locale/ja_JP/LC_MESSAGES/development.po b/docs/_locale/ja_JP/LC_MESSAGES/development.po index 1a40fdb8d..3076efae4 100644 --- a/docs/_locale/ja_JP/LC_MESSAGES/development.po +++ b/docs/_locale/ja_JP/LC_MESSAGES/development.po @@ -282,7 +282,7 @@ msgstr "" #: ../../development.rst:83 msgid "" "**One patch at a time:** Only fix one bug or add one feature at a time. " -"Design your patches so that they can be applyed as a whole. Keep your " +"Design your patches so that they can be applied as a whole. Keep your " "patches clean, small and focused." msgstr "" diff --git a/docs/_locale/ja_JP/LC_MESSAGES/faq.po b/docs/_locale/ja_JP/LC_MESSAGES/faq.po index da3aa004d..6a8a0992b 100644 --- a/docs/_locale/ja_JP/LC_MESSAGES/faq.po +++ b/docs/_locale/ja_JP/LC_MESSAGES/faq.po @@ -67,7 +67,7 @@ msgstr "" #: ../../faq.rst:40 msgid "" "In :ref:`dynamic route syntax `, a placeholder " -"token (````) matches everything up to the next slash. This equals to " +"token (````) matches everything up to the next slash. This equals " "``[^/]+`` in regular expression syntax. To accept slashes too, you have to " "add a custom regular pattern to the placeholder. An example: " "``/images/`` would match ``/images/icons/error.png`` but " diff --git a/docs/_locale/ja_JP/LC_MESSAGES/recipes.po b/docs/_locale/ja_JP/LC_MESSAGES/recipes.po index b603f966d..62e0d74d5 100644 --- a/docs/_locale/ja_JP/LC_MESSAGES/recipes.po +++ b/docs/_locale/ja_JP/LC_MESSAGES/recipes.po @@ -288,7 +288,7 @@ msgstr "" #: ../../recipes.rst:263 msgid "" "Heroku_, a popular cloud application platform now provides support for " -"running Python applications on their infastructure." +"running Python applications on their infrastructure." msgstr "" #: ../../recipes.rst:266 diff --git a/docs/_locale/ja_JP/LC_MESSAGES/tutorial_app.po b/docs/_locale/ja_JP/LC_MESSAGES/tutorial_app.po index db4718781..904197866 100644 --- a/docs/_locale/ja_JP/LC_MESSAGES/tutorial_app.po +++ b/docs/_locale/ja_JP/LC_MESSAGES/tutorial_app.po @@ -139,7 +139,7 @@ msgstr "" msgid "" "As we use SQLite3 as a database, make sure it is installed. On Linux " "systems, most distributions have SQLite3 installed by default. SQLite is " -"available for Windows and MacOS X as well and the `sqlite3` module is part " +"available for Windows and macOS as well and the `sqlite3` module is part " "of the python standard library." msgstr "" diff --git a/docs/_locale/pt_BR/LC_MESSAGES/_pot/changelog.po b/docs/_locale/pt_BR/LC_MESSAGES/_pot/changelog.po index ec25c717e..bcd2617d5 100644 --- a/docs/_locale/pt_BR/LC_MESSAGES/_pot/changelog.po +++ b/docs/_locale/pt_BR/LC_MESSAGES/_pot/changelog.po @@ -236,7 +236,7 @@ msgstr "" #: ../../changelog.rst:80 msgid "" -":meth:`Bottle.route` now accpets an import string for the ``callback`` " +":meth:`Bottle.route` now accepts an import string for the ``callback`` " "parameter." msgstr "" diff --git a/docs/_locale/pt_BR/LC_MESSAGES/_pot/deployment.po b/docs/_locale/pt_BR/LC_MESSAGES/_pot/deployment.po index b484cd558..6abb1f748 100644 --- a/docs/_locale/pt_BR/LC_MESSAGES/_pot/deployment.po +++ b/docs/_locale/pt_BR/LC_MESSAGES/_pot/deployment.po @@ -198,7 +198,7 @@ msgid "waitress_" msgstr "" #: ../../deployment.rst:69 -msgid "Multi-threaded, poweres Pyramid" +msgid "Multi-threaded, powers Pyramid" msgstr "" #: ../../deployment.rst:70 diff --git a/docs/_locale/pt_BR/LC_MESSAGES/_pot/development.po b/docs/_locale/pt_BR/LC_MESSAGES/_pot/development.po index 8da5f66c2..90a9c637a 100644 --- a/docs/_locale/pt_BR/LC_MESSAGES/_pot/development.po +++ b/docs/_locale/pt_BR/LC_MESSAGES/_pot/development.po @@ -281,7 +281,7 @@ msgstr "" #: ../../development.rst:85 msgid "" "**One patch at a time:** Only fix one bug or add one feature at a time. " -"Design your patches so that they can be applyed as a whole. Keep your " +"Design your patches so that they can be applied as a whole. Keep your " "patches clean, small and focused." msgstr "" diff --git a/docs/_locale/pt_BR/LC_MESSAGES/_pot/faq.po b/docs/_locale/pt_BR/LC_MESSAGES/_pot/faq.po index b4b3c829d..aefe01a86 100644 --- a/docs/_locale/pt_BR/LC_MESSAGES/_pot/faq.po +++ b/docs/_locale/pt_BR/LC_MESSAGES/_pot/faq.po @@ -61,7 +61,7 @@ msgstr "" #: ../../faq.rst:40 msgid "" "In :ref:`dynamic route syntax `, a placeholder " -"token (``:name``) matches everything up to the next slash. This equals to " +"token (``:name``) matches everything up to the next slash. This equals " "``[^/]+`` in regular expression syntax. To accept slashes too, you have to " "add a custom regular pattern to the placeholder. An example: " "``/images/:filepath#.*#`` would match ``/images/icons/error.png`` but " diff --git a/docs/_locale/pt_BR/LC_MESSAGES/_pot/recipes.po b/docs/_locale/pt_BR/LC_MESSAGES/_pot/recipes.po index 7df285089..7fb1e8a1f 100644 --- a/docs/_locale/pt_BR/LC_MESSAGES/_pot/recipes.po +++ b/docs/_locale/pt_BR/LC_MESSAGES/_pot/recipes.po @@ -261,7 +261,7 @@ msgstr "" #: ../../recipes.rst:237 msgid "" "Heroku_, a popular cloud application platform now provides support for " -"running Python applications on their infastructure." +"running Python applications on their infrastructure." msgstr "" #: ../../recipes.rst:240 diff --git a/docs/_locale/pt_BR/LC_MESSAGES/_pot/tutorial_app.po b/docs/_locale/pt_BR/LC_MESSAGES/_pot/tutorial_app.po index dc660e26e..b1edb4e46 100644 --- a/docs/_locale/pt_BR/LC_MESSAGES/_pot/tutorial_app.po +++ b/docs/_locale/pt_BR/LC_MESSAGES/_pot/tutorial_app.po @@ -138,7 +138,7 @@ msgstr "" msgid "" "As we use SQLite3 as a database, make sure it is installed. On Linux " "systems, most distributions have SQLite3 installed by default. SQLite is " -"available for Windows and MacOS X as well and the `sqlite3` module is part " +"available for Windows and macOS as well and the `sqlite3` module is part " "of the python standard library." msgstr "" diff --git a/docs/_locale/pt_BR/LC_MESSAGES/api.po b/docs/_locale/pt_BR/LC_MESSAGES/api.po index bad88ac16..bc8d804ca 100644 --- a/docs/_locale/pt_BR/LC_MESSAGES/api.po +++ b/docs/_locale/pt_BR/LC_MESSAGES/api.po @@ -480,7 +480,7 @@ msgid "Current value of the 'Content-Length' header." msgstr "" #: ../../../bottle.pydocstring of bottle.FileUpload.get_header:1 -msgid "Return the value of a header within the mulripart part." +msgid "Return the value of a header within the multipart part." msgstr "" #: ../../../bottle.pydocstring of bottle.FileUpload.filename:1 @@ -621,7 +621,7 @@ msgstr "" #: ../../../bottle.pydocstring of bottle.Bottle.mount:13 msgid "" "While it is possible to use path wildcards within the prefix path " -"(:class:`Bottle` childs only), it is highly discouraged." +"(:class:`Bottle` children only), it is highly discouraged." msgstr "" #: ../../../bottle.pydocstring of bottle.Bottle.mount:16 diff --git a/docs/_locale/pt_BR/LC_MESSAGES/changelog.po b/docs/_locale/pt_BR/LC_MESSAGES/changelog.po index 0b85b4744..866de23a6 100644 --- a/docs/_locale/pt_BR/LC_MESSAGES/changelog.po +++ b/docs/_locale/pt_BR/LC_MESSAGES/changelog.po @@ -495,7 +495,7 @@ msgstr "" #: ../../changelog.rst:147 msgid "" -":meth:`Bottle.route` now accpets an import string for the ``callback`` " +":meth:`Bottle.route` now accepts an import string for the ``callback`` " "parameter." msgstr "" diff --git a/docs/_locale/pt_BR/LC_MESSAGES/configuration.po b/docs/_locale/pt_BR/LC_MESSAGES/configuration.po index 043653b30..ffe9dbb93 100644 --- a/docs/_locale/pt_BR/LC_MESSAGES/configuration.po +++ b/docs/_locale/pt_BR/LC_MESSAGES/configuration.po @@ -223,7 +223,7 @@ msgid "Load values from a Python module." msgstr "" #: ../../../bottle.pydocstring of bottle.ConfigDict.load_module:3 -msgid "Example modue ``config.py``::" +msgid "Example module ``config.py``::" msgstr "" #: ../../../bottle.pydocstring of bottle.ConfigDict.load_module:0 diff --git a/docs/_locale/pt_BR/LC_MESSAGES/deployment.po b/docs/_locale/pt_BR/LC_MESSAGES/deployment.po index 1f583db5f..5402a8bf1 100644 --- a/docs/_locale/pt_BR/LC_MESSAGES/deployment.po +++ b/docs/_locale/pt_BR/LC_MESSAGES/deployment.po @@ -201,7 +201,7 @@ msgid "waitress_" msgstr "" #: ../../deployment.rst:69 -msgid "Multi-threaded, poweres Pyramid" +msgid "Multi-threaded, powers Pyramid" msgstr "" #: ../../deployment.rst:70 diff --git a/docs/_locale/pt_BR/LC_MESSAGES/development.po b/docs/_locale/pt_BR/LC_MESSAGES/development.po index 0cd7f170c..22e92c610 100644 --- a/docs/_locale/pt_BR/LC_MESSAGES/development.po +++ b/docs/_locale/pt_BR/LC_MESSAGES/development.po @@ -282,7 +282,7 @@ msgstr "" #: ../../development.rst:83 msgid "" "**One patch at a time:** Only fix one bug or add one feature at a time. " -"Design your patches so that they can be applyed as a whole. Keep your " +"Design your patches so that they can be applied as a whole. Keep your " "patches clean, small and focused." msgstr "" diff --git a/docs/_locale/pt_BR/LC_MESSAGES/recipes.po b/docs/_locale/pt_BR/LC_MESSAGES/recipes.po index e92d01a6e..884d478a4 100644 --- a/docs/_locale/pt_BR/LC_MESSAGES/recipes.po +++ b/docs/_locale/pt_BR/LC_MESSAGES/recipes.po @@ -288,7 +288,7 @@ msgstr "" #: ../../recipes.rst:263 msgid "" "Heroku_, a popular cloud application platform now provides support for " -"running Python applications on their infastructure." +"running Python applications on their infrastructure." msgstr "" #: ../../recipes.rst:266 diff --git a/docs/_locale/pt_BR/LC_MESSAGES/tutorial_app.po b/docs/_locale/pt_BR/LC_MESSAGES/tutorial_app.po index a2a8701cb..47aaad45f 100644 --- a/docs/_locale/pt_BR/LC_MESSAGES/tutorial_app.po +++ b/docs/_locale/pt_BR/LC_MESSAGES/tutorial_app.po @@ -139,7 +139,7 @@ msgstr "" msgid "" "As we use SQLite3 as a database, make sure it is installed. On Linux " "systems, most distributions have SQLite3 installed by default. SQLite is " -"available for Windows and MacOS X as well and the `sqlite3` module is part " +"available for Windows and macOS as well and the `sqlite3` module is part " "of the python standard library." msgstr "" diff --git a/docs/_locale/ru_RU/LC_MESSAGES/api.po b/docs/_locale/ru_RU/LC_MESSAGES/api.po index 8754a3aad..a4f02e907 100644 --- a/docs/_locale/ru_RU/LC_MESSAGES/api.po +++ b/docs/_locale/ru_RU/LC_MESSAGES/api.po @@ -478,7 +478,7 @@ msgid "Current value of the 'Content-Length' header." msgstr "" #: ../../../bottle.pydocstring of bottle.FileUpload.get_header:1 -msgid "Return the value of a header within the mulripart part." +msgid "Return the value of a header within the multipart part." msgstr "" #: ../../../bottle.pydocstring of bottle.FileUpload.filename:1 @@ -619,7 +619,7 @@ msgstr "" #: ../../../bottle.pydocstring of bottle.Bottle.mount:13 msgid "" "While it is possible to use path wildcards within the prefix path " -"(:class:`Bottle` childs only), it is highly discouraged." +"(:class:`Bottle` children only), it is highly discouraged." msgstr "" #: ../../../bottle.pydocstring of bottle.Bottle.mount:16 diff --git a/docs/_locale/ru_RU/LC_MESSAGES/changelog.po b/docs/_locale/ru_RU/LC_MESSAGES/changelog.po index c893663ce..fd05bdd63 100644 --- a/docs/_locale/ru_RU/LC_MESSAGES/changelog.po +++ b/docs/_locale/ru_RU/LC_MESSAGES/changelog.po @@ -495,7 +495,7 @@ msgstr "" #: ../../changelog.rst:147 msgid "" -":meth:`Bottle.route` now accpets an import string for the ``callback`` " +":meth:`Bottle.route` now accepts an import string for the ``callback`` " "parameter." msgstr "" diff --git a/docs/_locale/ru_RU/LC_MESSAGES/configuration.po b/docs/_locale/ru_RU/LC_MESSAGES/configuration.po index 062851b57..a2d657093 100644 --- a/docs/_locale/ru_RU/LC_MESSAGES/configuration.po +++ b/docs/_locale/ru_RU/LC_MESSAGES/configuration.po @@ -223,7 +223,7 @@ msgid "Load values from a Python module." msgstr "" #: ../../../bottle.pydocstring of bottle.ConfigDict.load_module:3 -msgid "Example modue ``config.py``::" +msgid "Example module ``config.py``::" msgstr "" #: ../../../bottle.pydocstring of bottle.ConfigDict.load_module:0 diff --git a/docs/_locale/ru_RU/LC_MESSAGES/deployment.po b/docs/_locale/ru_RU/LC_MESSAGES/deployment.po index ee6ac7bae..88416766f 100644 --- a/docs/_locale/ru_RU/LC_MESSAGES/deployment.po +++ b/docs/_locale/ru_RU/LC_MESSAGES/deployment.po @@ -201,7 +201,7 @@ msgid "waitress_" msgstr "" #: ../../deployment.rst:69 -msgid "Multi-threaded, poweres Pyramid" +msgid "Multi-threaded, powers Pyramid" msgstr "" #: ../../deployment.rst:70 diff --git a/docs/_locale/ru_RU/LC_MESSAGES/development.po b/docs/_locale/ru_RU/LC_MESSAGES/development.po index 112b0b34f..c9d89d019 100644 --- a/docs/_locale/ru_RU/LC_MESSAGES/development.po +++ b/docs/_locale/ru_RU/LC_MESSAGES/development.po @@ -282,7 +282,7 @@ msgstr "" #: ../../development.rst:83 msgid "" "**One patch at a time:** Only fix one bug or add one feature at a time. " -"Design your patches so that they can be applyed as a whole. Keep your " +"Design your patches so that they can be applied as a whole. Keep your " "patches clean, small and focused." msgstr "" diff --git a/docs/_locale/ru_RU/LC_MESSAGES/recipes.po b/docs/_locale/ru_RU/LC_MESSAGES/recipes.po index f2493215b..b065a8ad1 100644 --- a/docs/_locale/ru_RU/LC_MESSAGES/recipes.po +++ b/docs/_locale/ru_RU/LC_MESSAGES/recipes.po @@ -288,7 +288,7 @@ msgstr "" #: ../../recipes.rst:263 msgid "" "Heroku_, a popular cloud application platform now provides support for " -"running Python applications on their infastructure." +"running Python applications on their infrastructure." msgstr "" #: ../../recipes.rst:266 diff --git a/docs/_locale/ru_RU/LC_MESSAGES/tutorial_app.po b/docs/_locale/ru_RU/LC_MESSAGES/tutorial_app.po index c4840b272..45a01cf09 100644 --- a/docs/_locale/ru_RU/LC_MESSAGES/tutorial_app.po +++ b/docs/_locale/ru_RU/LC_MESSAGES/tutorial_app.po @@ -139,7 +139,7 @@ msgstr "" msgid "" "As we use SQLite3 as a database, make sure it is installed. On Linux " "systems, most distributions have SQLite3 installed by default. SQLite is " -"available for Windows and MacOS X as well and the `sqlite3` module is part " +"available for Windows and macOS as well and the `sqlite3` module is part " "of the python standard library." msgstr "" diff --git a/docs/_locale/zh_CN/LC_MESSAGES/_pot/changelog.po b/docs/_locale/zh_CN/LC_MESSAGES/_pot/changelog.po index ec25c717e..bcd2617d5 100644 --- a/docs/_locale/zh_CN/LC_MESSAGES/_pot/changelog.po +++ b/docs/_locale/zh_CN/LC_MESSAGES/_pot/changelog.po @@ -236,7 +236,7 @@ msgstr "" #: ../../changelog.rst:80 msgid "" -":meth:`Bottle.route` now accpets an import string for the ``callback`` " +":meth:`Bottle.route` now accepts an import string for the ``callback`` " "parameter." msgstr "" diff --git a/docs/_locale/zh_CN/LC_MESSAGES/_pot/deployment.po b/docs/_locale/zh_CN/LC_MESSAGES/_pot/deployment.po index b484cd558..6abb1f748 100644 --- a/docs/_locale/zh_CN/LC_MESSAGES/_pot/deployment.po +++ b/docs/_locale/zh_CN/LC_MESSAGES/_pot/deployment.po @@ -198,7 +198,7 @@ msgid "waitress_" msgstr "" #: ../../deployment.rst:69 -msgid "Multi-threaded, poweres Pyramid" +msgid "Multi-threaded, powers Pyramid" msgstr "" #: ../../deployment.rst:70 diff --git a/docs/_locale/zh_CN/LC_MESSAGES/_pot/development.po b/docs/_locale/zh_CN/LC_MESSAGES/_pot/development.po index 8da5f66c2..90a9c637a 100644 --- a/docs/_locale/zh_CN/LC_MESSAGES/_pot/development.po +++ b/docs/_locale/zh_CN/LC_MESSAGES/_pot/development.po @@ -281,7 +281,7 @@ msgstr "" #: ../../development.rst:85 msgid "" "**One patch at a time:** Only fix one bug or add one feature at a time. " -"Design your patches so that they can be applyed as a whole. Keep your " +"Design your patches so that they can be applied as a whole. Keep your " "patches clean, small and focused." msgstr "" diff --git a/docs/_locale/zh_CN/LC_MESSAGES/_pot/recipes.po b/docs/_locale/zh_CN/LC_MESSAGES/_pot/recipes.po index 7df285089..7fb1e8a1f 100644 --- a/docs/_locale/zh_CN/LC_MESSAGES/_pot/recipes.po +++ b/docs/_locale/zh_CN/LC_MESSAGES/_pot/recipes.po @@ -261,7 +261,7 @@ msgstr "" #: ../../recipes.rst:237 msgid "" "Heroku_, a popular cloud application platform now provides support for " -"running Python applications on their infastructure." +"running Python applications on their infrastructure." msgstr "" #: ../../recipes.rst:240 diff --git a/docs/_locale/zh_CN/LC_MESSAGES/_pot/tutorial_app.po b/docs/_locale/zh_CN/LC_MESSAGES/_pot/tutorial_app.po index dc660e26e..b1edb4e46 100644 --- a/docs/_locale/zh_CN/LC_MESSAGES/_pot/tutorial_app.po +++ b/docs/_locale/zh_CN/LC_MESSAGES/_pot/tutorial_app.po @@ -138,7 +138,7 @@ msgstr "" msgid "" "As we use SQLite3 as a database, make sure it is installed. On Linux " "systems, most distributions have SQLite3 installed by default. SQLite is " -"available for Windows and MacOS X as well and the `sqlite3` module is part " +"available for Windows and macOS as well and the `sqlite3` module is part " "of the python standard library." msgstr "" diff --git a/docs/_locale/zh_CN/LC_MESSAGES/api.po b/docs/_locale/zh_CN/LC_MESSAGES/api.po index c8eacf79d..6b721edd5 100644 --- a/docs/_locale/zh_CN/LC_MESSAGES/api.po +++ b/docs/_locale/zh_CN/LC_MESSAGES/api.po @@ -479,7 +479,7 @@ msgid "Current value of the 'Content-Length' header." msgstr "" #: ../../../bottle.pydocstring of bottle.FileUpload.get_header:1 -msgid "Return the value of a header within the mulripart part." +msgid "Return the value of a header within the multipart part." msgstr "" #: ../../../bottle.pydocstring of bottle.FileUpload.filename:1 @@ -620,7 +620,7 @@ msgstr "" #: ../../../bottle.pydocstring of bottle.Bottle.mount:13 msgid "" "While it is possible to use path wildcards within the prefix path " -"(:class:`Bottle` childs only), it is highly discouraged." +"(:class:`Bottle` children only), it is highly discouraged." msgstr "" #: ../../../bottle.pydocstring of bottle.Bottle.mount:16 diff --git a/docs/_locale/zh_CN/LC_MESSAGES/changelog.po b/docs/_locale/zh_CN/LC_MESSAGES/changelog.po index ab49b4a58..1dae970e1 100644 --- a/docs/_locale/zh_CN/LC_MESSAGES/changelog.po +++ b/docs/_locale/zh_CN/LC_MESSAGES/changelog.po @@ -495,7 +495,7 @@ msgstr "" #: ../../changelog.rst:147 msgid "" -":meth:`Bottle.route` now accpets an import string for the ``callback`` " +":meth:`Bottle.route` now accepts an import string for the ``callback`` " "parameter." msgstr "" diff --git a/docs/_locale/zh_CN/LC_MESSAGES/configuration.po b/docs/_locale/zh_CN/LC_MESSAGES/configuration.po index 2b8391f31..db376978e 100644 --- a/docs/_locale/zh_CN/LC_MESSAGES/configuration.po +++ b/docs/_locale/zh_CN/LC_MESSAGES/configuration.po @@ -223,7 +223,7 @@ msgid "Load values from a Python module." msgstr "" #: ../../../bottle.pydocstring of bottle.ConfigDict.load_module:3 -msgid "Example modue ``config.py``::" +msgid "Example module ``config.py``::" msgstr "" #: ../../../bottle.pydocstring of bottle.ConfigDict.load_module:0 diff --git a/docs/_locale/zh_CN/LC_MESSAGES/deployment.po b/docs/_locale/zh_CN/LC_MESSAGES/deployment.po index b2af7864d..7a492e17f 100644 --- a/docs/_locale/zh_CN/LC_MESSAGES/deployment.po +++ b/docs/_locale/zh_CN/LC_MESSAGES/deployment.po @@ -201,7 +201,7 @@ msgid "waitress_" msgstr "" #: ../../deployment.rst:69 -msgid "Multi-threaded, poweres Pyramid" +msgid "Multi-threaded, powers Pyramid" msgstr "多线程,源于Pyramid" #: ../../deployment.rst:70 diff --git a/docs/_locale/zh_CN/LC_MESSAGES/development.po b/docs/_locale/zh_CN/LC_MESSAGES/development.po index a7729365b..a6e3a0e40 100644 --- a/docs/_locale/zh_CN/LC_MESSAGES/development.po +++ b/docs/_locale/zh_CN/LC_MESSAGES/development.po @@ -282,7 +282,7 @@ msgstr "**测试:** 编写测试以证明你的补丁如期工作,且没有 #: ../../development.rst:83 msgid "" "**One patch at a time:** Only fix one bug or add one feature at a time. " -"Design your patches so that they can be applyed as a whole. Keep your " +"Design your patches so that they can be applied as a whole. Keep your " "patches clean, small and focused." msgstr "**一次只提交一个补丁:** 一次只修改一个bug,一次只添加一个新特征。保持补丁的干净。" diff --git a/docs/_locale/zh_CN/LC_MESSAGES/recipes.po b/docs/_locale/zh_CN/LC_MESSAGES/recipes.po index dd0c92ac6..a9a199a61 100644 --- a/docs/_locale/zh_CN/LC_MESSAGES/recipes.po +++ b/docs/_locale/zh_CN/LC_MESSAGES/recipes.po @@ -288,7 +288,7 @@ msgstr "在Heroku中使用Bottle" #: ../../recipes.rst:263 msgid "" "Heroku_, a popular cloud application platform now provides support for " -"running Python applications on their infastructure." +"running Python applications on their infrastructure." msgstr "Heroku_ ,一个流行的云应用平台,提供Python支持。" #: ../../recipes.rst:266 diff --git a/docs/_locale/zh_CN/LC_MESSAGES/stpl.po b/docs/_locale/zh_CN/LC_MESSAGES/stpl.po index 2f3df0754..25e9d7dda 100644 --- a/docs/_locale/zh_CN/LC_MESSAGES/stpl.po +++ b/docs/_locale/zh_CN/LC_MESSAGES/stpl.po @@ -101,7 +101,7 @@ msgstr "{{}}中的Python语句会在渲染的时候被执行,可访问传递 #: ../../stpl.rst:62 msgid "Embedded python code" -msgstr "嵌入Pyhton代码" +msgstr "嵌入Python代码" #: ../../stpl.rst:66 msgid "" diff --git a/docs/_locale/zh_CN/LC_MESSAGES/tutorial_app.po b/docs/_locale/zh_CN/LC_MESSAGES/tutorial_app.po index e0027679b..87dd1c9f4 100644 --- a/docs/_locale/zh_CN/LC_MESSAGES/tutorial_app.po +++ b/docs/_locale/zh_CN/LC_MESSAGES/tutorial_app.po @@ -139,9 +139,9 @@ msgstr "其它软件" msgid "" "As we use SQLite3 as a database, make sure it is installed. On Linux " "systems, most distributions have SQLite3 installed by default. SQLite is " -"available for Windows and MacOS X as well and the `sqlite3` module is part " +"available for Windows and macOS as well and the `sqlite3` module is part " "of the python standard library." -msgstr "因为我们使用SQLite3来做数据库,请确保它已安装。如果是Linux系统,大多数的发行版已经默认安装了SQLite3。SQLite同时可工作在Windows系统和MacOS X系统上面。Pyhton标准库中,已经包含了 `sqlite3` 模块。" +msgstr "因为我们使用SQLite3来做数据库,请确保它已安装。如果是Linux系统,大多数的发行版已经默认安装了SQLite3。SQLite同时可工作在Windows系统和macOS系统上面。Python标准库中,已经包含了 `sqlite3` 模块。" #: ../../tutorial_app.rst:66 msgid "Create An SQL Database" diff --git a/docs/changelog.rst b/docs/changelog.rst index 0fcf0ed94..012fe73a0 100755 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -5,7 +5,7 @@ Release Notes ============= -This project loosly follows Semantic Versioning (``major.minor.patch``), with +This project loosely follows Semantic Versioning (``major.minor.patch``), with the exception that changes are allowed in minor releases as long as the change is necessary to match documentation, specification or expectation. In other words: Bugfixes do not count as backward incompatible changes, even if @@ -111,7 +111,7 @@ versions should not update to Bottle 0.13 and stick with 0.12 instead. These changes might require special care when updating. * Signed cookies now use a stronger HMAC algorithm by default. This will result in old cookies to appear invalid after the update. Pass an explicit ``digestmod=hashlib.md5`` to :meth:`Request.get_cookie ` and :meth:`Response.set_cookie ` to get the old behavior. -* Bottle now ships with its own multipart form data parser (borrowed from `multipart `_) and no longer relies on ``cgi.FieldStorage``, which was removed in Python 3.13. This may change the way broken (non-standard) form submissions are parsed. The new parser is more strict and correct than ohe old one. +* Bottle now ships with its own multipart form data parser (borrowed from `multipart `_) and no longer relies on ``cgi.FieldStorage``, which was removed in Python 3.13. This may change the way broken (non-standard) form submissions are parsed. The new parser is more strict and correct than the old one. * Installing bottle with `pip` or similar tools will now install an additional command line executable named `bottle` into the `bin` folder of your (virtual) environment. This will replace the now deprecated `bottle.py` executable in a later release. See above. .. rubric:: Other Improvements diff --git a/docs/deployment.rst b/docs/deployment.rst index bbb0a0566..f6081acdc 100644 --- a/docs/deployment.rst +++ b/docs/deployment.rst @@ -74,10 +74,10 @@ cgi Run as CGI script flup flup_ Run as FastCGI process gae gae_ Helper for Google App Engine deployments wsgiref wsgiref_ Single-threaded default server -cherrypy cherrypy_ Multi-threaded (deprectated)) -cheroot cheroot_ Successor of cheerypy +cherrypy cherrypy_ Multi-threaded (deprecated)) +cheroot cheroot_ Successor of cherrypy paste paste_ Multi-threaded, stable, tried and tested -waitress waitress_ Multi-threaded, poweres Pyramid +waitress waitress_ Multi-threaded, powers Pyramid gunicorn gunicorn_ Pre-forked, partly written in C eventlet eventlet_ Asynchronous framework with WSGI support. gevent gevent_ Asynchronous (greenlets) diff --git a/docs/development.rst b/docs/development.rst index 9319edb76..b1cc17ba0 100644 --- a/docs/development.rst +++ b/docs/development.rst @@ -34,7 +34,7 @@ Major Release (x.0) The major release number is increased on important milestones that change the design of core parts of the framework and break backward compatibility in some fundamental way. You probably have to change parts of your application to use a new major release. These releases are very rare, through. Minor Release (x.y) - The minor release number is increased whenever APIs or behavior changes in some backwards incompatible way or major features or new APIs are added. You might get some depreciation warnings any may have to tweak some configuration settings to restore the old behavior, but in most cases these changes are designed to be backward compatible for at least one minor release. You should update to stay up do date, but don't have to. + The minor release number is increased whenever APIs or behavior changes in some backwards incompatible way or major features or new APIs are added. You might get some deprecation warnings any may have to tweak some configuration settings to restore the old behavior, but in most cases these changes are designed to be backward compatible for at least one minor release. You should update to stay up do date, but don't have to. Patches (x.y.z) The patch number is increased on bug-fixes and other patches that do not change APIs or behaviour. You can safely update without editing your application code. In fact, you really should as soon as possible, because important security fixes are released this way. diff --git a/docs/faq.rst b/docs/faq.rst index 82f033fac..c9a1bd257 100644 --- a/docs/faq.rst +++ b/docs/faq.rst @@ -38,14 +38,14 @@ Common errors and pitfalls Bottle searches in ``./`` and ``./views/`` for templates. In a mod_python_ or mod_wsgi_ environment, the working directory (``./``) depends on your Apache settings. You should add an absolute path to the template search path:: - bottle.TEMPLATE_PATH.insert(0,'/absolut/path/to/templates/') + bottle.TEMPLATE_PATH.insert(0,'/absolute/path/to/templates/') so bottle searches the right paths. Dynamic Routes and Slashes -------------------------------------------------------------------------------- -In :ref:`dynamic route syntax `, a placeholder token (````) matches everything up to the next slash. This equals to ``[^/]+`` in regular expression syntax. To accept slashes too, you have to add a custom regular pattern to the placeholder. An example: ``/images/`` would match ``/images/icons/error.png`` but ``/images/`` won't. +In :ref:`dynamic route syntax `, a placeholder token (````) matches everything up to the next slash. This equals ``[^/]+`` in regular expression syntax. To accept slashes too, you have to add a custom regular pattern to the placeholder. An example: ``/images/`` would match ``/images/icons/error.png`` but ``/images/`` won't. Problems with reverse proxies -------------------------------------------------------------------------------- @@ -64,7 +64,7 @@ Redirects and url-building only works if bottle knows the public address and loc -Recieps for common tasks +Recipes for common tasks ============================ @@ -268,7 +268,7 @@ Using hooks to handle CORS Hooks are useful to unconditionally do something before or after each request. For example, if you want to allow Cross-Origin requests for your entire application, instead of writing a :doc:`plugin ` you can -use hooks to add the appropiate headers:: +use hooks to add the appropriate headers:: from bottle import hook, response, HTTPResponse diff --git a/docs/plugins/dev.rst b/docs/plugins/dev.rst index 6ce66f67c..4d8ee7043 100644 --- a/docs/plugins/dev.rst +++ b/docs/plugins/dev.rst @@ -86,7 +86,7 @@ Common patterns .. rubric:: Dependency or resource injection -Plugins may checks if the callback accepts a specific keyboard parameter and only apply themselves if that parameter is present. For example, route callbacks that expect a ``db`` keyword argument need a database connection. Routes that do not expect such a parameter can be skipped and not decorated. The paramneter name should be configurable to avoid conflicts with other plugins or route parameters. +Plugins may checks if the callback accepts a specific keyboard parameter and only apply themselves if that parameter is present. For example, route callbacks that expect a ``db`` keyword argument need a database connection. Routes that do not expect such a parameter can be skipped and not decorated. The parameter name should be configurable to avoid conflicts with other plugins or route parameters. .. rubric:: Request context properties diff --git a/docs/tutorial.rst b/docs/tutorial.rst index 43f736130..6e866ed01 100755 --- a/docs/tutorial.rst +++ b/docs/tutorial.rst @@ -274,7 +274,7 @@ Static files or assets such as images or CSS files are not served automatically. Note that we used the ``:path`` route filter here to allow slash characters in ``filepath`` and serve files from sub-directories, too. -The :func:`static_file` helper function has a lot of benefits compared to handling files manually. Most importantly it prevents `directory traversal attacks `_ (e.g. ``GET /static/../../../../etc/secrets``) by restricting file access to the specified ``root`` directory. Make sure to use an absolut path for ``root``, though. Relative paths (staring with ``./``) are resolved against the current work directory which may not always be the same as your project directory. +The :func:`static_file` helper function has a lot of benefits compared to handling files manually. Most importantly it prevents `directory traversal attacks `_ (e.g. ``GET /static/../../../../etc/secrets``) by restricting file access to the specified ``root`` directory. Make sure to use an absolute path for ``root``, though. Relative paths (staring with ``./``) are resolved against the current work directory which may not always be the same as your project directory. The :func:`static_file` function returns :class:`HTTPResponse` or :class:`HTTPError`, which can be raised as an exception if you need to. @@ -542,8 +542,8 @@ Property Data source ============================================ ============================================================== :attr:`Request.GET ` Query parameters :attr:`Request.query ` Alias for :attr:`Request.GET ` -:attr:`Request.POST ` orm fields and file uploads combined -:attr:`Request.forms ` orm fields +:attr:`Request.POST ` Form fields and file uploads combined +:attr:`Request.forms ` Form fields :attr:`Request.files ` File uploads or very large form fields :attr:`Request.params ` Query parameters and form fields combined ============================================ ============================================================== @@ -557,13 +557,13 @@ First of all, :class:`FormsDict` is a subclass of :class:`MultiDict` and can sto for choice in request.forms.getall('multiple_choice'): do_something(choice) -Attribute-like access is also supported, returning empty strings for missing values. This simplifies code a lot whend ealing with lots of optional attributes:: +Attribute-like access is also supported, returning empty strings for missing values. This simplifies code a lot when dealing with lots of optional attributes:: name = request.query.name # may be an empty string .. rubric:: A word on unicode and character encodings -Unicode characters in the request path, query parameters or cookies are a bit tricky. HTTP is a very old byte-based protocol that predates unicode and lacks explicit encoding information. This is why WSGI servers have to fall back on `ISO-8859-1` (aka `latin1`, a reversible input encoding) for those estrings. Modern browsers default to `utf8`, though. It's a bit much to ask application developers to translate every single user input string to the correct encoding manually. Bottle makes this easy and just assumes `utf8` for everything. All strings returned by Bottle APIs support the full range of unicode characters, as long as the webpage or HTTP client follows best practices and does not break with established standards. +Unicode characters in the request path, query parameters or cookies are a bit tricky. HTTP is a very old byte-based protocol that predates unicode and lacks explicit encoding information. This is why WSGI servers have to fall back on `ISO-8859-1` (aka `latin1`, a reversible input encoding) for those strings. Modern browsers default to `utf8`, though. It's a bit much to ask application developers to translate every single user input string to the correct encoding manually. Bottle makes this easy and just assumes `utf8` for everything. All strings returned by Bottle APIs support the full range of unicode characters, as long as the webpage or HTTP client follows best practices and does not break with established standards. Query Parameters -------------------------------------------------------------------------------- @@ -656,7 +656,7 @@ JSON For JavaScript and REST APIs it is very common to send ``application/json`` to the server instead of from data. The :attr:`Request.json ` attribute contains the parsed data structure if available, or ``None`` for empty -requests or those that did not contain ``application/json`` data. Parsing errors trigger an appropiate :exc:`HTTPError`. +requests or those that did not contain ``application/json`` data. Parsing errors trigger an appropriate :exc:`HTTPError`. Raw Request Data diff --git a/docs/tutorial_app.rst b/docs/tutorial_app.rst index fea31b94d..39c6db870 100644 --- a/docs/tutorial_app.rst +++ b/docs/tutorial_app.rst @@ -30,7 +30,7 @@ This tutorial gives a brief introduction to the Bottle_ WSGI_ Framework. The mai To understand the content of this tutorial, it is not really necessary to have a basic knowledge of WSGI, as Bottle tries to keep WSGI away from the user anyway as much as possible. A fair bit of understanding of the Python_ programming language is of course required. Furthermore, the example application created in this tutorial retrieves and stores data in a SQL database, so (very) basic knowledge on SQL helps, but is not a must to understand the concepts of Bottle. Right here, SQLite_ is used. As Bottle is a framework for web-based application, most of output send to the Browser is HTML. Thus, a basic idea about the common HTML tags certainly helps as well. In case HTML basic still need to be learned, a good starting point is the `HTML tutorial`_ on the Mozilla Developer Network website. -For the sake of introducing Bottle, the Python code "in between" is kept short, in order to keep the focus. Although all code within the tutorial works fine, it may not necessarily be used as-is "in the wild", e.g. on a publically accessible server. To do so, e.g. input validtion, better database protection, better error handling and other things need to be added. +For the sake of introducing Bottle, the Python code "in between" is kept short, in order to keep the focus. Although all code within the tutorial works fine, it may not necessarily be used as-is "in the wild", e.g. on a publically accessible server. To do so, e.g. input validation, better database protection, better error handling and other things need to be added. .. contents:: Table of Contents @@ -68,13 +68,13 @@ And, finally, ``python`` will be used in this tutorial to run Python 3.10 and ne .. rubric:: Install Bottle -Assuming that a fairly new installation of Python (version 3.10 or higher) is used, only Bottle needs to be installed in addition to that. Bottle has no other dependencies than Python itself. Following the recommended best-pratice for Python and installing Python modules, let's create a venv_ first and install Bottle inside the venv. Open the directory of choice where the venv should be created and execute the following commands: +Assuming that a fairly new installation of Python (version 3.10 or higher) is used, only Bottle needs to be installed in addition to that. Bottle has no other dependencies than Python itself. Following the recommended best-practice for Python and installing Python modules, let's create a venv_ first and install Bottle inside the venv. Open the directory of choice where the venv should be created and execute the following commands: .. code:: python -m venv bottle_venv cd bottle_venv - #for Linux & MacOS + #for Linux & macOS source bin/activate #for Windows .\Scripts\activate @@ -189,7 +189,7 @@ Actually, more than one route can be bound to a function. The following code: works fine, too. What will not work is to bind one route to more than one function. -What the browser displays is what is returned, thus the value given by the ``return`` statement. In this example, it is necessary to convert ``result`` in to a string by ``str()``, as Bottle expects a string or a list of strings from the return statement. But here, the result of the database query is a list of tuples, which is the standard defined by the `Python DB API`_. +What the browser displays is what is returned, thus the value given by the ``return`` statement. In this example, it is necessary to convert ``result`` into a string by ``str()``, as Bottle expects a string or a list of strings from the return statement. But here, the result of the database query is a list of tuples, which is the standard defined by the `Python DB API`_. Now, after understanding the little script above, it is time to execute it and watch the result. Just run ``python todo.py`` and open the URL ``http://127.0.0.1:8080/todo`` in the browser. In case no mistake was made writing the code, the output should look like this:: @@ -284,7 +284,7 @@ Run the script again and look at the output. Still not really nice and not compl .. rubric:: Adding a Base Template -Bottle's SimpleTempate allows, like other template engines, nesting templates. This is pretty handy, as it allows to define a base template holding e.g. the HTML doctype definition, the head and the body section, which is then used as the base for all other templates generating the actual output. The base template looks like this: +Bottle's SimpleTemplate allows, like other template engines, nesting templates. This is pretty handy, as it allows to define a base template holding e.g. the HTML doctype definition, the head and the body section, which is then used as the base for all other templates generating the actual output. The base template looks like this: .. code-block:: html @@ -314,7 +314,7 @@ To use the base template from another template like e.g. ``shows_task.tpl``, jus This tells the template to rebase its content into the template ``base.tpl``. -Reload ``http://127.0.0.1:8000/todo`` and the output is now valid HTML. Of couse the base template can extended as required, e.g. by loading a CSS style sheet or defining own styles in a ```` section in the header. +Reload ``http://127.0.0.1:8000/todo`` and the output is now valid HTML. Of course, the base template can extended as required, e.g. by loading a CSS style sheet or defining own styles in a ```` section in the header. .. rubric:: Using GET Parameters @@ -470,7 +470,7 @@ The complete route for editing a task looks like this: return template('edit_task', current_data=current_data, number=number) -A lot of the code's logic is pretty similat to the ``/new`` route and the corresponding ``new_task`` function: the route accepts GET and POST requests and, depending on the request, either sends the template ``edit_task`` or updates a task in the database according to the form data received. +A lot of the code's logic is pretty similar to the ``/new`` route and the corresponding ``new_task`` function: the route accepts GET and POST requests and, depending on the request, either sends the template ``edit_task`` or updates a task in the database according to the form data received. What's new here is the dynamic routing ``@app.route('/edit/' ...)`` which accepts one wildcard, supposed to be an integer value. The wildcard is assigned to the variable ``number``, which is also expected by the function ``edit_task``. So e.g. opening the URL ``http:/127.0.0.1:8080/edit/2`` would open the task with the ID for editing. In case no number is passed, either because of omitting the parameter or passing a string which is not an integer only, an error will be raised. @@ -529,7 +529,7 @@ Sometimes it may become necessary to associate a route not to a Python function from bottle import static_file -to the code to import Bottle's function ``static_file``, which handles sending static files. Let's assume all the static files are located in a subdirectory named ``static`` relativ to the application. The code to serve static files from there looks as follows: +to the code to import Bottle's function ``static_file``, which handles sending static files. Let's assume all the static files are located in a subdirectory named ``static`` relative to the application. The code to serve static files from there looks as follows: .. code-block:: python @@ -576,7 +576,7 @@ In the event a 404 Not Found error occurs, the function decorated with ``app.err .. rubric:: Create a Redirect (Bonus Section) -Although the ToDo application works just fine, it still has one little flaw: When trying to open ``127.0.01:8080`` in the browser, the root route, a 404 error will occur, as no route is established for ```/``. Which is not too much of a problem, but at least a little bit unexpected. Of course this could be changed by modifiying the route ``app.route('/todo')`` to ``app.route('/')``. Or, if the /todo route should be kept, a redirect can be added to the code. Again, this is pretty straight forward: +Although the ToDo application works just fine, it still has one little flaw: When trying to open ``127.0.01:8080`` in the browser, the root route, a 404 error will occur, as no route is established for ```/``. Which is not too much of a problem, but at least a little bit unexpected. Of course this could be changed by modifying the route ``app.route('/todo')`` to ``app.route('/')``. Or, if the /todo route should be kept, a redirect can be added to the code. Again, this is pretty straight forward: .. code-block:: python @@ -613,14 +613,14 @@ In the very first "Hello World" example, the server is started with ``app.run(ho .. warning:: - It is highly recommended *not* to run an application based on Bottle - or any web application - with Root / administrator rights! The whole code is excuted with elevated rights, which gives a (much) higher risk to harm the system in case of programming mistakes. Plus, in case an outside person can capture the application, e.g. by utilizes a bug in the code, this person may be able to work with elevated rights on the server. It is highly recommended to run Bottle with user rights, probably in case of a real application, by a dedicated user specifically set-up for this. In case the application should listen on a privileged port like 80 and / or 443, it is a common and a well-established practice to serve Bottle - or any WSGI-based application - with an WSGI application server with user rights on an unprivileged port locally and use a reverse proxy web server in front of the WSGI application server. More on this below. + It is highly recommended *not* to run an application based on Bottle - or any web application - with Root / administrator rights! The whole code is executed with elevated rights, which gives a (much) higher risk to harm the system in case of programming mistakes. Plus, in case an outside person can capture the application, e.g. by utilizes a bug in the code, this person may be able to work with elevated rights on the server. It is highly recommended to run Bottle with user rights, probably in case of a real application, by a dedicated user specifically set-up for this. In case the application should listen on a privileged port like 80 and / or 443, it is a common and a well-established practice to serve Bottle - or any WSGI-based application - with an WSGI application server with user rights on an unprivileged port locally and use a reverse proxy web server in front of the WSGI application server. More on this below. .. rubric:: Running Bottle with a different server As said above, the build-in server is perfectly suitable for local development, personal use or a very small group of people within an internal network. For everything else, the development server may become a bottleneck, as it is single-threaded, thus it can only serve one request at a time. Plus, it may not be robust enough in general. -Bottle comes with a range of `server adapters`_ . To run the Bottle application with a different server than the build-in development server, simple pass the ``server`` argument to the run function. For the following example, the Waitress_ WSGI application server from the Pylons project is used. Waitress works equally good on Linux, MacOS and Windows. +Bottle comes with a range of `server adapters`_ . To run the Bottle application with a different server than the build-in development server, simple pass the ``server`` argument to the run function. For the following example, the Waitress_ WSGI application server from the Pylons project is used. Waitress works equally good on Linux, macOS and Windows. .. note:: @@ -666,7 +666,7 @@ whereas ``todo`` is the name of the file holding the Bottle application and ``ap Final Words ============ -This is the end of this tutorial for Bottle. The basic concepts of Bottle are shown and a first application utilizin the Bottle WSGI framework was written. Additionally, it was shown how to serve a Bottle application for real applications with a WSGI application server. +This is the end of this tutorial for Bottle. The basic concepts of Bottle are shown and a first application utilizing the Bottle WSGI framework was written. Additionally, it was shown how to serve a Bottle application for real applications with a WSGI application server. As said in the introduction, this tutorial is not showing all possibilities Bottle offers. What was skipped here is e.g. receiving file objects and streams and how to handle authentication data. For a complete overview of all features of Bottle, please refer to the full `Bottle documentation`_ . diff --git a/test/build_python.sh b/test/build_python.sh index 45b9653af..abebb6525 100644 --- a/test/build_python.sh +++ b/test/build_python.sh @@ -12,7 +12,7 @@ PREFIX=`cd $PREFIX; pwd` PATH="$PREFIX/bin:$PATH" -# Add ubuntus special lib and include dirs so python can find them. +# Add ubuntu's special lib and include dirs so python can find them. export arch=$(dpkg-architecture -qDEB_HOST_MULTIARCH) export LDFLAGS="-L/usr/lib/$arch -L/lib/$arch" export CFLAGS="-I/usr/include/$arch" diff --git a/test/test_config.py b/test/test_config.py index e8ed5fa83..1dcd37790 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -6,7 +6,7 @@ class TestConfDict(unittest.TestCase): def test_isadict(self): """ ConfigDict should behaves like a normal dict. """ - # It is a dict-subclass, so this kind of pointless, but it doen't hurt. + # It is a dict-subclass, so this kind of pointless, but it doesn't hurt. d, m = dict(), ConfigDict() d['key'], m['key'] = 'value', 'value' d['k2'], m['k2'] = 'v1', 'v1' diff --git a/test/test_environ.py b/test/test_environ.py index c6082ccf8..3ae4ed912 100755 --- a/test/test_environ.py +++ b/test/test_environ.py @@ -318,7 +318,7 @@ def test_chunked_not_chunked_at_all(self): self._test_chunked('abcdef', HTTPError) def test_multipart(self): - """ Environ: POST (multipart files and multible values per key) """ + """ Environ: POST (multipart files and multiple values per key) """ fields = [('field1','value1'), ('field2','value2'), ('field2','万难')] files = [('file1','filename1.txt','content1'), ('万难','万难foo.py', 'ä\nö\rü')] e = tools.multipart_environ(fields=fields, files=files) @@ -829,7 +829,7 @@ def test_relative_path(self): self.assertRedirect('../baz/../test.html', 'http://127.0.0.1/foo/test.html', PATH_INFO='/foo/bar/') - def test_sheme(self): + def test_scheme(self): self.assertRedirect('./test.html', 'https://127.0.0.1/test.html', wsgi_url_scheme='https') self.assertRedirect('./test.html', 'https://127.0.0.1:80/test.html', diff --git a/test/test_formsdict.py b/test/test_formsdict.py index 214899740..d89084a0b 100644 --- a/test/test_formsdict.py +++ b/test/test_formsdict.py @@ -6,12 +6,12 @@ class TestFormsDict(unittest.TestCase): def test_attr_access(self): - """ FomsDict.attribute returs string values as unicode. """ + """ FormsDict.attribute returns string values as unicode. """ d = FormsDict(py3='瓶') self.assertEqual('瓶', d.py3) self.assertEqual('瓶', d["py3"]) def test_attr_missing(self): - """ FomsDict.attribute returs u'' on missing keys. """ + """ FormsDict.attribute returns u'' on missing keys. """ d = FormsDict() self.assertEqual('', d.missing) diff --git a/test/test_importhook.py b/test/test_importhook.py index b8154d584..cef8bb43c 100644 --- a/test/test_importhook.py +++ b/test/test_importhook.py @@ -11,7 +11,7 @@ def make_module(self, name, **args): mod.__dict__.update(**args) return mod - def test_direkt_import(self): + def test_direct_import(self): mod = self.make_module('bottle_test') import bottle.ext.test self.assertEqual(bottle.ext.test, mod) diff --git a/test/test_jinja2.py b/test/test_jinja2.py index 6d1b8aab3..2daf7e3de 100644 --- a/test/test_jinja2.py +++ b/test/test_jinja2.py @@ -33,7 +33,7 @@ def test_error(self): self.assertRaises(Exception, Jinja2Template, '{% for badsyntax') def test_inherit(self): - """ Templates: Jinja2 lookup and inherience """ + """ Templates: Jinja2 lookup and inheritance """ with chdir(__file__): t = Jinja2Template(name='jinja2_inherit', lookup=['./views/']).render() self.assertEqual('begin abc end', ''.join(t)) diff --git a/test/test_mako.py b/test/test_mako.py index 3fa8b83b0..794c3b0a2 100644 --- a/test/test_mako.py +++ b/test/test_mako.py @@ -30,7 +30,7 @@ def test_error(self): self.assertRaises(Exception, MakoTemplate, '%for badsyntax') def test_inherit(self): - """ Templates: Mako lookup and inherience """ + """ Templates: Mako lookup and inheritance """ with chdir(__file__): t = MakoTemplate(name='mako_inherit', lookup=['./views/']).render(var='v') self.assertEqual('o\ncvc\no\n', t) diff --git a/test/test_mdict.py b/test/test_mdict.py index b82cef26c..24299ef54 100755 --- a/test/test_mdict.py +++ b/test/test_mdict.py @@ -39,7 +39,7 @@ def test_isheader(self): self.assertEqual([('Abc-Def', '6'), ('Abc-Def', '7')], list(m.iterallitems())) def test_headergetbug(self): - ''' Assure HeaderDict.get() to be case insensitive ''' + ''' Assure HeaderDict.get() to be case-insensitive ''' d = HeaderDict() d['UPPER'] = 'UPPER' d['lower'] = 'lower' diff --git a/test/test_outputfilter.py b/test/test_outputfilter.py index 219bd15d9..c5f59fac3 100755 --- a/test/test_outputfilter.py +++ b/test/test_outputfilter.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -'''Everything returned by Bottle()._cast() MUST be WSGI compatiple.''' +'''Everything returned by Bottle()._cast() MUST be WSGI compatible.''' import unittest import bottle diff --git a/test/test_plugins.py b/test/test_plugins.py index a4f018bd1..8aa40d052 100644 --- a/test/test_plugins.py +++ b/test/test_plugins.py @@ -87,7 +87,7 @@ def a(): return 'plugin' self.assertBody('plugin', '/a') self.assertBody('plugin;foo', '/b') - def test_plugin_oder(self): + def test_plugin_order(self): self.app.install(MyPlugin()).add_content = ';global-1' self.app.install(MyPlugin()).add_content = ';global-2' l1 = MyPlugin() diff --git a/test/test_resources.py b/test/test_resources.py index 556bf16a9..aa2a394de 100644 --- a/test/test_resources.py +++ b/test/test_resources.py @@ -66,7 +66,7 @@ def test_get(self): rm.add_path('/first/') rm.add_path(__file__) rm.add_path('/last/') - self.assertEqual(None, rm.lookup('notexist.txt')) + self.assertEqual(None, rm.lookup('nonexistent.txt')) self.assertEqual(__file__, rm.lookup(os.path.basename(__file__))) def test_open(self): diff --git a/test/test_stpl.py b/test/test_stpl.py index 73f37d320..6e68a26cf 100755 --- a/test/test_stpl.py +++ b/test/test_stpl.py @@ -86,7 +86,7 @@ def test_blocks(self): self.assertRenders(t, 'start\nend', i=False) def test_elsebug(self): - ''' Whirespace between block keyword and colon is allowed ''' + ''' Whitespace between block keyword and colon is allowed ''' self.assertRenders("%if 1:\nyes\n%else:\nno\n%end\n", "yes\n") self.assertRenders("%if 1:\nyes\n%else :\nno\n%end\n", "yes\n") @@ -103,7 +103,7 @@ def test_newline_in_parameterlist(self): self.assertRenders("%a=[1,\n%2]\n{{len(a)}}", "2") def test_dedentbug(self): - ''' One-Line dednet blocks should not change indention ''' + ''' One-Line dedent blocks should not change indention ''' t = '%if x: a="if"\n%else: a="else"\n%end\n{{a}}' self.assertRenders(t, "if", x=True) self.assertRenders(t, "else", x=False) @@ -173,7 +173,7 @@ def test_setdefault(self): self.assertRenders(t, '1234', x='1234') self.assertRenders(t, 'default') - def test_defnied(self): + def test_defined(self): self.assertRenders('{{x if defined("x") else "no"}}', 'yes', x='yes') self.assertRenders('{{x if defined("x") else "no"}}', 'no') @@ -198,7 +198,7 @@ def test_winbreaks_end_bug(self): self.assertRenders('%for i in test:\r\n{{i}}\r\n%end\r\n', '1\r\n2\r\n3\r\n', **d) def test_commentonly(self): - """ Templates: Commentd should behave like code-lines (e.g. flush text-lines) """ + """ Templates: Comment should behave like code-lines (e.g. flush text-lines) """ t = SimpleTemplate('...\n%#test\n...') self.assertNotEqual('#test', t.code.splitlines()[0])