summaryrefslogtreecommitdiff
path: root/docs/_locale/pt_BR
diff options
context:
space:
mode:
Diffstat (limited to 'docs/_locale/pt_BR')
-rw-r--r--docs/_locale/pt_BR/LC_MESSAGES/api.po150
-rw-r--r--docs/_locale/pt_BR/LC_MESSAGES/async.po4
-rw-r--r--docs/_locale/pt_BR/LC_MESSAGES/changelog.po491
-rw-r--r--docs/_locale/pt_BR/LC_MESSAGES/configuration.po130
-rw-r--r--docs/_locale/pt_BR/LC_MESSAGES/contact.po12
-rw-r--r--docs/_locale/pt_BR/LC_MESSAGES/deployment.po193
-rw-r--r--docs/_locale/pt_BR/LC_MESSAGES/development.po93
-rw-r--r--docs/_locale/pt_BR/LC_MESSAGES/faq.po19
-rw-r--r--docs/_locale/pt_BR/LC_MESSAGES/index.po70
-rw-r--r--docs/_locale/pt_BR/LC_MESSAGES/plugindev.po10
-rw-r--r--docs/_locale/pt_BR/LC_MESSAGES/plugins/index.po190
-rw-r--r--docs/_locale/pt_BR/LC_MESSAGES/recipes.po115
-rw-r--r--docs/_locale/pt_BR/LC_MESSAGES/routing.po67
-rw-r--r--docs/_locale/pt_BR/LC_MESSAGES/stpl.po60
-rw-r--r--docs/_locale/pt_BR/LC_MESSAGES/tutorial.po297
-rw-r--r--docs/_locale/pt_BR/LC_MESSAGES/tutorial_app.po359
16 files changed, 1384 insertions, 876 deletions
diff --git a/docs/_locale/pt_BR/LC_MESSAGES/api.po b/docs/_locale/pt_BR/LC_MESSAGES/api.po
index 29d2d1b..bad88ac 100644
--- a/docs/_locale/pt_BR/LC_MESSAGES/api.po
+++ b/docs/_locale/pt_BR/LC_MESSAGES/api.po
@@ -1,15 +1,16 @@
# SOME DESCRIPTIVE TITLE.
-# Copyright (C) 2009-2017, Marcel Hellkamp
+# Copyright (C) 2009-2020, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
#
# Translators:
# Igor P. Leroy <ip.leroy@gmail.com>, 2015
+# john snow <mfrcouto@hotmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: bottle\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-12-19 14:15+0100\n"
-"PO-Revision-Date: 2015-12-13 21:06+0000\n"
+"POT-Creation-Date: 2020-12-31 18:35+0100\n"
+"PO-Revision-Date: 2020-12-31 17:35+0000\n"
"Last-Translator: defnull <marc@gsites.de>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/bottle/bottle/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
@@ -30,7 +31,7 @@ msgstr ""
#: ../../api.rst:17
msgid "Module Contents"
-msgstr ""
+msgstr "Conteúdo dos Módulos"
#: ../../api.rst:19
msgid "The module defines several functions, constants, and an exception."
@@ -47,6 +48,22 @@ msgid ""
"Start a server instance. This method blocks until the server terminates."
msgstr ""
+#: ../../../bottle.pydocstring of bottle.run:0 ../../../bottle.pydocstring of
+#: bottle.path_shift:0 ../../../bottle.pydocstring of bottle.MultiDict.get:0
+#: ../../../bottle.pydocstring of bottle.HeaderDict.get:0
+#: ../../../bottle.pydocstring of bottle.ResourceManager:0
+#: ../../../bottle.pydocstring of bottle.ResourceManager.add_path:0
+#: ../../../bottle.pydocstring of bottle.FileUpload.save:0
+#: ../../../bottle.pydocstring of bottle.Bottle:0 ../../../bottle.pydocstring
+#: of bottle.Bottle.mount:0 ../../../bottle.pydocstring of
+#: bottle.Bottle.route:0 ../../../bottle.pydocstring of
+#: bottle.BaseRequest.path_shift:0 ../../../bottle.pydocstring of
+#: bottle.BaseResponse:0 ../../../bottle.pydocstring of
+#: bottle.BaseResponse.set_cookie:0 ../../../bottle.pydocstring of
+#: bottle.BaseResponse.set_cookie:0
+msgid "Parameters"
+msgstr ""
+
#: ../../../bottle.pydocstring of bottle.run:3
msgid ""
"WSGI application or target string supported by :func:`load_app`. (default: "
@@ -202,6 +219,10 @@ msgstr ""
msgid "Shift path fragments from PATH_INFO to SCRIPT_NAME and vice versa."
msgstr ""
+#: ../../../bottle.pydocstring of bottle.path_shift:0
+msgid "Returns"
+msgstr ""
+
#: ../../../bottle.pydocstring of bottle.path_shift:3
msgid "The modified paths."
msgstr ""
@@ -231,40 +252,59 @@ msgid ""
"special methods available to access the full list of values."
msgstr ""
+#: ../../../bottle.pydocstring of bottle.MultiDict.keys:1
+msgid "D.keys() -> a set-like object providing a view on D's keys"
+msgstr ""
+
+#: ../../../bottle.pydocstring of bottle.MultiDict.values:1
+msgid "D.values() -> an object providing a view on D's values"
+msgstr ""
+
+#: ../../../bottle.pydocstring of bottle.MultiDict.items:1
+msgid "D.items() -> a set-like object providing a view on D's items"
+msgstr ""
+
#: ../../../bottle.pydocstring of bottle.MultiDict.get:1
+#: ../../../bottle.pydocstring of bottle.HeaderDict.get:1
msgid "Return the most recent value for a key."
msgstr ""
#: ../../../bottle.pydocstring of bottle.MultiDict.get:3
+#: ../../../bottle.pydocstring of bottle.HeaderDict.get:3
msgid ""
"The default value to be returned if the key is not present or the type "
"conversion fails."
msgstr ""
#: ../../../bottle.pydocstring of bottle.MultiDict.get:5
+#: ../../../bottle.pydocstring of bottle.HeaderDict.get:5
msgid "An index for the list of available values."
msgstr ""
#: ../../../bottle.pydocstring of bottle.MultiDict.get:6
+#: ../../../bottle.pydocstring of bottle.HeaderDict.get:6
msgid ""
"If defined, this callable is used to cast the value into a specific type. "
"Exception are suppressed and result in the default value to be returned."
msgstr ""
#: ../../../bottle.pydocstring of bottle.MultiDict.append:1
+#: ../../../bottle.pydocstring of bottle.HeaderDict.append:1
msgid "Add a new value to the list of values for this key."
msgstr ""
#: ../../../bottle.pydocstring of bottle.MultiDict.replace:1
+#: ../../../bottle.pydocstring of bottle.HeaderDict.replace:1
msgid "Replace the list of values with a single value."
msgstr ""
#: ../../../bottle.pydocstring of bottle.MultiDict.getall:1
-#: ../../../bottle.pydocstring of bottle.MultiDict.getlist:1
+#: ../../../bottle.pydocstring of bottle.MultiDict.getall:1
+#: ../../../bottle.pydocstring of bottle.HeaderDict.getall:1
msgid "Return a (possibly empty) list of values for a key."
msgstr ""
-#: ../../../bottle.pydocstring of bottle.MultiDict.getone:1
+#: ../../../bottle.pydocstring of bottle.MultiDict.get:1
msgid "Aliases for WTForms to mimic other multi-dict APIs (Django)"
msgstr ""
@@ -338,6 +378,7 @@ msgid "Return the current default application and remove it from the stack."
msgstr ""
#: ../../../bottle.pydocstring of bottle.AppStack.push:1
+#: ../../../bottle.pydocstring of bottle.AppStack.push:1
msgid "Add a new :class:`Bottle` instance to the stack"
msgstr ""
@@ -359,11 +400,11 @@ msgstr ""
msgid "controls which lookups are cached. One of 'all', 'found' or 'none'."
msgstr ""
-#: ../../../bottle.pydocstring of bottle.ResourceManager.path:1
+#: ../docstring of bottle.ResourceManager.path:1
msgid "A list of search paths. See :meth:`add_path` for details."
msgstr ""
-#: ../../../bottle.pydocstring of bottle.ResourceManager.cache:1
+#: ../docstring of bottle.ResourceManager.cache:1
msgid "A cache for resolved paths. ``res.cache.clear()`` clears the cache."
msgstr ""
@@ -404,7 +445,7 @@ msgstr ""
#: ../../../bottle.pydocstring of bottle.ResourceManager.lookup:3
msgid ""
-"The :attr:`path` list is searched in order. The first match is returend. "
+"The :attr:`path` list is searched in order. The first match is returned. "
"Symlinks are followed. The result is cached to speed up future lookups."
msgstr ""
@@ -412,19 +453,19 @@ msgstr ""
msgid "Find a resource and return a file object, or raise IOError."
msgstr ""
-#: ../../../bottle.pydocstring of bottle.FileUpload.file:1
+#: ../docstring of bottle.FileUpload.file:1
msgid "Open file(-like) object (BytesIO buffer or temporary file)"
msgstr ""
-#: ../../../bottle.pydocstring of bottle.FileUpload.name:1
+#: ../docstring of bottle.FileUpload.name:1
msgid "Name of the upload form field"
msgstr ""
-#: ../../../bottle.pydocstring of bottle.FileUpload.raw_filename:1
+#: ../docstring of bottle.FileUpload.raw_filename:1
msgid "Raw filename as sent by the client (may contain unsafe characters)"
msgstr ""
-#: ../../../bottle.pydocstring of bottle.FileUpload.headers:1
+#: ../docstring of bottle.FileUpload.headers:1
msgid "A :class:`HeaderDict` with additional headers (e.g. content-type)"
msgstr ""
@@ -438,6 +479,10 @@ msgstr ""
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."
+msgstr ""
+
#: ../../../bottle.pydocstring of bottle.FileUpload.filename:1
msgid ""
"Name of the file on the client file system, but normalized to ensure file "
@@ -496,11 +541,11 @@ msgid ""
"middleware handle exceptions."
msgstr ""
-#: ../../../bottle.pydocstring of bottle.Bottle.config:1
+#: ../docstring of bottle.Bottle.config:1
msgid "A :class:`ConfigDict` for app specific configuration."
msgstr ""
-#: ../../../bottle.pydocstring of bottle.Bottle.resources:1
+#: ../docstring of bottle.Bottle.resources:1
msgid "A :class:`ResourceManager` for application files"
msgstr ""
@@ -624,7 +669,7 @@ msgstr ""
#: ../../../bottle.pydocstring of bottle.Bottle.match:1
msgid ""
-"Search for a matching route and return a (:class:`Route` , urlargs) tuple. "
+"Search for a matching route and return a (:class:`Route`, urlargs) tuple. "
"The second value is a dictionary with parameters extracted from the URL. "
"Raise :exc:`HTTPError` (404/405) on a non-match."
msgstr ""
@@ -707,7 +752,9 @@ msgid "Equals :meth:`route` with a ``PATCH`` method parameter."
msgstr ""
#: ../../../bottle.pydocstring of bottle.Bottle.error:1
-msgid "Decorator: Register an output handler for a HTTP error code"
+msgid ""
+"Register an output handler for a HTTP error code. Can be used as a decorator"
+" or called directly ::"
msgstr ""
#: ../../../bottle.pydocstring of bottle.Bottle.wsgi:1
@@ -718,40 +765,40 @@ msgstr ""
msgid ""
"This class wraps a route callback along with route specific metadata and "
"configuration and applies Plugins on demand. It is also responsible for "
-"turing an URL path rule into a regular expression usable by the Router."
+"turning an URL path rule into a regular expression usable by the Router."
msgstr ""
-#: ../../../bottle.pydocstring of bottle.Route.app:1
+#: ../docstring of bottle.Route.app:1
msgid "The application this route is installed to."
msgstr ""
-#: ../../../bottle.pydocstring of bottle.Route.rule:1
+#: ../docstring of bottle.Route.rule:1
msgid "The path-rule string (e.g. ``/wiki/<page>``)."
msgstr ""
-#: ../../../bottle.pydocstring of bottle.Route.method:1
+#: ../docstring of bottle.Route.method:1
msgid "The HTTP method as a string (e.g. ``GET``)."
msgstr ""
-#: ../../../bottle.pydocstring of bottle.Route.callback:1
+#: ../docstring of bottle.Route.callback:1
msgid ""
"The original callback with no plugins applied. Useful for introspection."
msgstr ""
-#: ../../../bottle.pydocstring of bottle.Route.name:1
+#: ../docstring of bottle.Route.name:1
msgid "The name of the route (if specified) or ``None``."
msgstr ""
-#: ../../../bottle.pydocstring of bottle.Route.plugins:1
+#: ../docstring of bottle.Route.plugins:1
msgid "A list of route-specific plugins (see :meth:`Bottle.route`)."
msgstr ""
-#: ../../../bottle.pydocstring of bottle.Route.skiplist:1
+#: ../docstring of bottle.Route.skiplist:1
msgid ""
"A list of plugins to not apply to this route (see :meth:`Bottle.route`)."
msgstr ""
-#: ../../../bottle.pydocstring of bottle.Route.config:1
+#: ../docstring of bottle.Route.config:1
msgid ""
"Additional keyword arguments passed to the :meth:`Bottle.route` decorator "
"are stored in this dictionary. Used for route-specific plugin configuration "
@@ -906,10 +953,10 @@ msgstr ""
#: ../../../bottle.pydocstring of bottle.BaseRequest.json:1
msgid ""
-"If the ``Content-Type`` header is ``application/json``, this property holds "
-"the parsed content of the request body. Only requests smaller than "
-":attr:`MEMFILE_MAX` are processed to avoid memory exhaustion. Invalid JSON "
-"raises a 400 error response."
+"If the ``Content-Type`` header is ``application/json`` or ``application"
+"/json-rpc``, this property holds the parsed content of the request body. "
+"Only requests smaller than :attr:`MEMFILE_MAX` are processed to avoid memory"
+" exhaustion. Invalid JSON raises a 400 error response."
msgstr ""
#: ../../../bottle.pydocstring of bottle.BaseRequest.body:1
@@ -925,7 +972,7 @@ msgstr ""
msgid "True if Chunked transfer encoding was."
msgstr ""
-#: ../../../bottle.pydocstring of bottle.BaseRequest.GET:1
+#: ../../../bottle.pydocstring of bottle.BaseRequest.query:1
msgid "An alias for :attr:`query`."
msgstr ""
@@ -968,7 +1015,7 @@ msgid ""
msgstr ""
#: ../../../bottle.pydocstring of bottle.BaseRequest.path_shift:2
-msgid "Shift path segments from path to script_name and"
+msgid "Shift path segments from :attr:`path` to :attr:`script_name` and"
msgstr ""
#: ../../../bottle.pydocstring of bottle.BaseRequest.path_shift:2
@@ -1048,15 +1095,10 @@ msgid ""
"multithreaded server)."
msgstr ""
-#: ../../../bottle.pydocstring of bottle.LocalRequest.bind:1
+#: ../../../bottle.pydocstring of bottle.BaseRequest.__init__:1
msgid "Wrap a WSGI environ dictionary."
msgstr ""
-#: ../../../bottle.pydocstring of bottle.LocalRequest.environ:1
-#: ../../../bottle.pydocstring of bottle.LocalResponse.body:1
-msgid "Thread-local property"
-msgstr ""
-
#: ../../api.rst:146
msgid "The :class:`Response` Object"
msgstr ""
@@ -1212,23 +1254,37 @@ msgstr ""
#: ../../../bottle.pydocstring of bottle.BaseResponse.set_cookie:17
msgid ""
"prevents client-side javascript to read this cookie (default: off, requires "
-"Python 2.7 or newer)."
+"Python 2.6 or newer)."
msgstr ""
-#: ../../../bottle.pydocstring of bottle.BaseResponse.set_cookie:20
+#: ../../../bottle.pydocstring of bottle.BaseResponse.set_cookie:19
msgid ""
-"If neither `expires` nor `max_age` is set (default), the cookie will expire "
+"Control or disable third-party use for this cookie. Possible values: `lax`, "
+"`strict` or `none` (default)."
+msgstr ""
+
+#: ../../../bottle.pydocstring of bottle.BaseResponse.set_cookie:22
+msgid ""
+"If neither `expires` nor `maxage` is set (default), the cookie will expire "
"at the end of the browser session (as soon as the browser window is closed)."
msgstr ""
-#: ../../../bottle.pydocstring of bottle.BaseResponse.set_cookie:24
+#: ../../../bottle.pydocstring of bottle.BaseResponse.set_cookie:26
msgid ""
"Signed cookies may store any pickle-able object and are cryptographically "
"signed to prevent manipulation. Keep in mind that cookies are limited to 4kb"
" in most browsers."
msgstr ""
-#: ../../../bottle.pydocstring of bottle.BaseResponse.set_cookie:28
+#: ../../../bottle.pydocstring of bottle.BaseResponse.set_cookie:30
+msgid ""
+"Warning: Pickle is a potentially dangerous format. If an attacker gains "
+"access to the secret key, he could forge cookies that execute code on server"
+" side if unpickled. Using pickle is discouraged and support for it will be "
+"removed in later versions of bottle."
+msgstr ""
+
+#: ../../../bottle.pydocstring of bottle.BaseResponse.set_cookie:35
msgid ""
"Warning: Signed cookies are not encrypted (the client can still see the "
"content) and not copy-protected (the client can restore an old cookie). The "
@@ -1250,6 +1306,14 @@ msgid ""
"response at the end of the request/response cycle."
msgstr ""
+#: ../../../bottle.pydocstring of bottle.BaseResponse.__init__:1
+msgid "Initialize self. See help(type(self)) for accurate signature."
+msgstr ""
+
+#: ../../../bottle.pydocstring of bottle.LocalResponse.body:1
+msgid "Thread-local property"
+msgstr ""
+
#: ../../api.rst:160
msgid ""
"The following two classes can be raised as an exception. The most noticeable"
diff --git a/docs/_locale/pt_BR/LC_MESSAGES/async.po b/docs/_locale/pt_BR/LC_MESSAGES/async.po
index 193b722..e12cf7b 100644
--- a/docs/_locale/pt_BR/LC_MESSAGES/async.po
+++ b/docs/_locale/pt_BR/LC_MESSAGES/async.po
@@ -1,5 +1,5 @@
# SOME DESCRIPTIVE TITLE.
-# Copyright (C) 2009-2017, Marcel Hellkamp
+# Copyright (C) 2009-2020, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
#
# Translators:
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: bottle\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-12-19 14:15+0100\n"
+"POT-Creation-Date: 2020-12-31 18:35+0100\n"
"PO-Revision-Date: 2015-01-22 19:17+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/bottle/bottle/language/pt_BR/)\n"
diff --git a/docs/_locale/pt_BR/LC_MESSAGES/changelog.po b/docs/_locale/pt_BR/LC_MESSAGES/changelog.po
index 413c231..0b85b47 100644
--- a/docs/_locale/pt_BR/LC_MESSAGES/changelog.po
+++ b/docs/_locale/pt_BR/LC_MESSAGES/changelog.po
@@ -1,15 +1,15 @@
# SOME DESCRIPTIVE TITLE.
-# Copyright (C) 2009-2017, Marcel Hellkamp
+# Copyright (C) 2009-2020, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
-#
+#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: bottle\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-12-19 14:15+0100\n"
-"PO-Revision-Date: 2015-01-22 19:17+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2020-12-31 18:35+0100\n"
+"PO-Revision-Date: 2020-12-31 17:35+0000\n"
+"Last-Translator: defnull <marc@gsites.de>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/bottle/bottle/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -25,28 +25,281 @@ msgstr ""
msgid "Release 0.13"
msgstr ""
-#: ../../changelog.rst:13
-msgid "Added :func:`patch` shortcut for `route(..., method='PATCH')`"
+#: ../../changelog.rst:11
+msgid "Not released yet."
msgstr ""
-#: ../../changelog.rst:17
-msgid "Release 0.12"
+#: ../../changelog.rst:14
+msgid "Dropped support for Python versions that reached their end-of-life."
msgstr ""
-#: ../../changelog.rst:19
+#: ../../changelog.rst:15
msgid ""
-"New SimpleTemplate parser implementation * Support for multi-line code "
-"blocks (`<% ... %>`). * The keywords `include` and `rebase` are functions "
-"now and can accept variable template names."
+"Keeping up support for ancient Python versions hinders adaptation of new "
+"features and serves no real purpose. If you need support for older Python "
+"versions, you can stay on bottle-0.12. The updated list of tested and "
+"supported python releases is as follows:"
+msgstr ""
+
+#: ../../changelog.rst:20
+msgid "Python 2.7 (>= 2.7.3)"
+msgstr ""
+
+#: ../../changelog.rst:21
+msgid "Python 3.6"
msgstr ""
#: ../../changelog.rst:22
+msgid "Python 3.7"
+msgstr ""
+
+#: ../../changelog.rst:23
+msgid "Python 3.8"
+msgstr ""
+
+#: ../../changelog.rst:24
+msgid "Python 3.9"
+msgstr ""
+
+#: ../../changelog.rst:25
+msgid "PyPy 2.7"
+msgstr ""
+
+#: ../../changelog.rst:26
+msgid "PyPy 3.6"
+msgstr ""
+
+#: ../../changelog.rst:27
+msgid "PyPy 3.7"
+msgstr ""
+
+#: ../../changelog.rst:29
+msgid ""
+"Support for Python 2.5 was marked as deprecated since 0.12. We decided to go"
+" a step further and also remove support for 2.6 and 3.1 to 3.5 even if it "
+"was never deprecated explicitly in bottle. This means that this release is "
+"*not* backwards compatible in Python <2.7.3 or <3.6 environments. "
+"Maintainers for distributions or systems that still use these old python "
+"versions should not update to Bottle 0.13 and stick with 0.12 instead."
+msgstr ""
+
+#: ../../changelog.rst:35
+msgid "Stabilized APIs"
+msgstr ""
+
+#: ../../changelog.rst:36
+msgid ""
+"The documented API of the :class:`ConfigDict` class is now considered stable"
+" and ready to use."
+msgstr ""
+
+#: ../../changelog.rst:38
+msgid "Deprecated APIs"
+msgstr ""
+
+#: ../../changelog.rst:39
+msgid ""
+"The old route syntax (``/hello/:name``) is deprecated in favor of the more "
+"readable and flexible ``/hello/<name>`` syntax."
+msgstr ""
+
+#: ../../changelog.rst:40
+msgid ""
+":meth:`Bottle.mount` now recognizes Bottle instance and will warn about "
+"parameters that are not compatible with the new mounting behavior. The old "
+"behavior (mount applications as WSGI callable) still works and is used as a "
+"fallback automatically."
+msgstr ""
+
+#: ../../changelog.rst:41
+msgid "The undocumented :func:`local_property` helper is now deprecated."
+msgstr ""
+
+#: ../../changelog.rst:42
+msgid ""
+"The server adapter for google app engine is not useful anymore and marked as"
+" deprecated."
+msgstr ""
+
+#: ../../changelog.rst:43
+msgid ""
+"Bottle uses pickle to store arbitrary objects into signed cookies. This is "
+"safe, as long as the signature key remains a secret. Unfortunately, people "
+"tend to push code with signature keys to github all the time, so we decided "
+"to remove pickle-support from bottle. Signed cookies will now issue a "
+"deprecation warning if the value is not a string, and support for non-string"
+" values will be removed in 0.14. The global :func:`cookie_encode`, "
+":func:`cookie_decode` and :func:`is_cookie_encoded` are now also deprecated."
+" If you are using this feature, think about using json to serialize your "
+"objects before storing them into cookies, or switch to a session system that"
+" stores data server-side instead of client-side."
+msgstr ""
+
+#: ../../changelog.rst:45
+msgid "Removed APIs (deprecated since 0.12)"
+msgstr ""
+
+#: ../../changelog.rst:46
+msgid ""
+"Plugins with the old API (``api=1`` or no api attribute) will no longer "
+"work."
+msgstr ""
+
+#: ../../changelog.rst:47
+msgid ""
+"Parameter order of :meth:`Bottle.mount` changed in 0.10. The old order will "
+"now result in an error instead of a warning."
+msgstr ""
+
+#: ../../changelog.rst:48
+msgid ""
+"The :class:`ConfigDict` class was introduced in 0.11 and changed during "
+"0.12. These changes are now final."
+msgstr ""
+
+#: ../../changelog.rst:50
+msgid ""
+"Attribute access and assignment was removed due to high overhead and limited"
+" usability."
+msgstr ""
+
+#: ../../changelog.rst:51
+msgid ""
+"Namespaced sub-instance creation was removed. ``config[\"a\"][\"b\"]`` has a"
+" high overhead and little benefit over ``config[\"a.b\"]``."
+msgstr ""
+
+#: ../../changelog.rst:52
+msgid ""
+":class:`ConfigDict` instances are no longer callable. This was a shortcut "
+"for :meth:`ConfigDict.update`."
+msgstr ""
+
+#: ../../changelog.rst:53
+msgid ""
+":class:`ConfigDict` constructor no longer accepts any parameters. Use the "
+"`load_*` methods instead."
+msgstr ""
+
+#: ../../changelog.rst:55
+msgid ""
+"Bottle 0.12 changed some aspects of the Simple Template Engine. These "
+"changes are now final and the old syntax will now longer work."
+msgstr ""
+
+#: ../../changelog.rst:57
+msgid ""
+"The magic ``{{rebase()}}`` call was replaced by a ``base`` variable. "
+"Example: ``{{base}}``"
+msgstr ""
+
+#: ../../changelog.rst:58
+msgid ""
+"In STPL Templates, the 'rebase' and 'include' keywords were replaced with "
+"functions in 0.12."
+msgstr ""
+
+#: ../../changelog.rst:59
+msgid ""
+"PEP-263 encoding strings are no longer recognized. Templates are always "
+"utf-8."
+msgstr ""
+
+#: ../../changelog.rst:61
+msgid ""
+"The 'geventSocketIO' server adapter was removed without notice. It did not "
+"work anyway."
+msgstr ""
+
+#: ../../changelog.rst:63
+msgid "Changes"
+msgstr ""
+
+#: ../../changelog.rst:64
+msgid "These changes might require special care when updating."
+msgstr ""
+
+#: ../../changelog.rst:66
+msgid ""
+"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."
+msgstr ""
+
+#: ../../changelog.rst:68
+msgid "Other Improvements"
+msgstr ""
+
+#: ../../changelog.rst:69
+msgid ""
+"Bottle() instances are now context managers. If used in a with-statement, "
+"the default application changes to the specific instance and the shortcuts "
+"for many instance methods can be used."
+msgstr ""
+
+#: ../../changelog.rst:70
+msgid ""
+"Added support for ``PATCH`` requests and the :meth:`Bottle.patch` decorator."
+msgstr ""
+
+#: ../../changelog.rst:71
+msgid ""
+"Added `aiohttp <http://aiohttp.readthedocs.io/en/stable/>`_ and `uvloop "
+"<https://github.com/MagicStack/uvloop>`_ server adapters."
+msgstr ""
+
+#: ../../changelog.rst:72
+msgid "Added command-line arguments for config from json or ini files."
+msgstr ""
+
+#: ../../changelog.rst:73
+msgid ""
+":meth:`Bottle.mount` now recognizes instances of :class:`Bottle` and mounts "
+"them with significantly less overhead than other WSGI applications."
+msgstr ""
+
+#: ../../changelog.rst:74
+msgid ""
+"The :attr:`Request.json` property now accepts ``application/json-rpc`` "
+"requests."
+msgstr ""
+
+#: ../../changelog.rst:75
+msgid ""
+":func:`static_file` gained support for ``ETag`` headers. It will generate "
+"ETags and recognizes ``If-None-Match`` headers."
+msgstr ""
+
+#: ../../changelog.rst:76
+msgid "Jinja2 templates will produce better error messages than before."
+msgstr ""
+
+#: ../../changelog.rst:82
+msgid "Release 0.12"
+msgstr ""
+
+#: ../../changelog.rst:84
+msgid "New SimpleTemplate parser implementation"
+msgstr ""
+
+#: ../../changelog.rst:86
+msgid "Support for multi-line code blocks (`<% ... %>`)."
+msgstr ""
+
+#: ../../changelog.rst:87
+msgid ""
+"The keywords `include` and `rebase` are functions now and can accept "
+"variable template names."
+msgstr ""
+
+#: ../../changelog.rst:89
msgid ""
-"The new :meth:`BaseRequest.route` property returns the :class:`Route` that "
+"The new :attr:`BaseRequest.route` property returns the :class:`Route` that "
"originally matched the request."
msgstr ""
-#: ../../changelog.rst:23
+#: ../../changelog.rst:90
msgid ""
"Removed the ``BaseRequest.MAX_PARAMS`` limit. The hash collision bug in "
"CPythons dict() implementation was fixed over a year ago. If you are still "
@@ -54,69 +307,69 @@ msgid ""
"that you get security fixed from your distributor."
msgstr ""
-#: ../../changelog.rst:24
+#: ../../changelog.rst:91
msgid "New :class:`ConfigDict` API (see :doc:`configuration`)"
msgstr ""
-#: ../../changelog.rst:26
+#: ../../changelog.rst:93
msgid ""
"More information can be found in this `development blog post "
"<http://blog.bottlepy.org/2013/07/19/preview-bottle-012.html>`_."
msgstr ""
-#: ../../changelog.rst:30
+#: ../../changelog.rst:97
msgid "Release 0.11"
msgstr ""
-#: ../../changelog.rst:32
+#: ../../changelog.rst:99
msgid ""
"Native support for Python 2.x and 3.x syntax. No need to run 2to3 anymore."
msgstr ""
-#: ../../changelog.rst:33
+#: ../../changelog.rst:100
msgid ""
"Support for partial downloads (``Range`` header) in :func:`static_file`."
msgstr ""
-#: ../../changelog.rst:34
+#: ../../changelog.rst:101
msgid ""
"The new :class:`ResourceManager` interface helps locating files bundled with"
" an application."
msgstr ""
-#: ../../changelog.rst:35
+#: ../../changelog.rst:102
msgid ""
"Added a server adapter for `waitress "
"<http://docs.pylonsproject.org/projects/waitress/en/latest/>`_."
msgstr ""
-#: ../../changelog.rst:36
+#: ../../changelog.rst:103
msgid ""
"New :meth:`Bottle.merge` method to install all routes from one application "
"into another."
msgstr ""
-#: ../../changelog.rst:37
+#: ../../changelog.rst:104
msgid ""
"New :attr:`BaseRequest.app` property to get the application object that "
"handles a request."
msgstr ""
-#: ../../changelog.rst:38
+#: ../../changelog.rst:105
msgid ""
"Added :meth:`FormsDict.decode()` to get an all-unicode version (needed by "
"WTForms)."
msgstr ""
-#: ../../changelog.rst:39
+#: ../../changelog.rst:106
msgid ":class:`MultiDict` and subclasses are now pickle-able."
msgstr ""
-#: ../../changelog.rst:42
+#: ../../changelog.rst:109
msgid "API Changes"
msgstr ""
-#: ../../changelog.rst:43
+#: ../../changelog.rst:110
msgid ""
":attr:`Response.status` is a read-write property that can be assigned either"
" a numeric status code or a status string with a reason phrase (``200 OK``)."
@@ -125,53 +378,53 @@ msgid ""
":attr:`BaseResponse.status_code` and :attr:`BaseResponse.status_line`."
msgstr ""
-#: ../../changelog.rst:46
+#: ../../changelog.rst:113
msgid "API Deprecations"
msgstr ""
-#: ../../changelog.rst:47
+#: ../../changelog.rst:114
msgid ""
":class:`SimpleTALTemplate` is now deprecating. There seems to be no demand."
msgstr ""
-#: ../../changelog.rst:50
+#: ../../changelog.rst:117
msgid "Release 0.10"
msgstr ""
-#: ../../changelog.rst:52
+#: ../../changelog.rst:119
msgid "Plugin API v2"
msgstr ""
-#: ../../changelog.rst:54
+#: ../../changelog.rst:121
msgid "To use the new API, set :attr:`Plugin.api` to ``2``."
msgstr ""
-#: ../../changelog.rst:55
+#: ../../changelog.rst:122
msgid ""
":meth:`Plugin.apply` receives a :class:`Route` object instead of a context "
"dictionary as second parameter. The new object offers some additional "
"information and may be extended in the future."
msgstr ""
-#: ../../changelog.rst:56
+#: ../../changelog.rst:123
msgid ""
"Plugin names are considered unique now. The topmost plugin with a given name"
" on a given route is installed, all other plugins with the same name are "
"silently ignored."
msgstr ""
-#: ../../changelog.rst:58
+#: ../../changelog.rst:125
msgid "The Request/Response Objects"
msgstr ""
-#: ../../changelog.rst:60
+#: ../../changelog.rst:127
msgid ""
"Added :attr:`BaseRequest.json`, :attr:`BaseRequest.remote_route`, "
":attr:`BaseRequest.remote_addr`, :attr:`BaseRequest.query` and "
":attr:`BaseRequest.script_name`."
msgstr ""
-#: ../../changelog.rst:61
+#: ../../changelog.rst:128
msgid ""
"Added :attr:`BaseResponse.status_line` and :attr:`BaseResponse.status_code` "
"attributes. In future releases, :attr:`BaseResponse.status` will return a "
@@ -180,204 +433,204 @@ msgid ""
"use the verbose attributes from now on."
msgstr ""
-#: ../../changelog.rst:62
+#: ../../changelog.rst:129
msgid ""
"Replaced :class:`MultiDict` with a specialized :class:`FormsDict` in many "
"places. The new dict implementation allows attribute access and handles "
"unicode form values transparently."
msgstr ""
-#: ../../changelog.rst:64
+#: ../../changelog.rst:131
msgid "Templates"
msgstr ""
-#: ../../changelog.rst:66
+#: ../../changelog.rst:133
msgid ""
"Added three new functions to the SimpleTemplate default namespace that "
"handle undefined variables: :func:`stpl.defined`, :func:`stpl.get` and "
":func:`stpl.setdefault`."
msgstr ""
-#: ../../changelog.rst:67
+#: ../../changelog.rst:134
msgid ""
"The default escape function for SimpleTemplate now additionally escapes "
"single and double quotes."
msgstr ""
-#: ../../changelog.rst:69
+#: ../../changelog.rst:136
msgid "Routing"
msgstr ""
-#: ../../changelog.rst:71
+#: ../../changelog.rst:138
msgid ""
"A new route syntax (e.g. ``/object/<id:int>``) and support for route "
"wildcard filters."
msgstr ""
-#: ../../changelog.rst:72
+#: ../../changelog.rst:139
msgid "Four new wildcard filters: `int`, `float`, `path` and `re`."
msgstr ""
-#: ../../changelog.rst:74
+#: ../../changelog.rst:141
msgid "Other changes"
msgstr ""
-#: ../../changelog.rst:76
+#: ../../changelog.rst:143
msgid "Added command line interface to load applications and start servers."
msgstr ""
-#: ../../changelog.rst:77
+#: ../../changelog.rst:144
msgid ""
"Introduced a :class:`ConfigDict` that makes accessing configuration a lot "
"easier (attribute access and auto-expanding namespaces)."
msgstr ""
-#: ../../changelog.rst:78
+#: ../../changelog.rst:145
msgid "Added support for raw WSGI applications to :meth:`Bottle.mount`."
msgstr ""
-#: ../../changelog.rst:79
+#: ../../changelog.rst:146
msgid ":meth:`Bottle.mount` parameter order changed."
msgstr ""
-#: ../../changelog.rst:80
+#: ../../changelog.rst:147
msgid ""
":meth:`Bottle.route` now accpets an import string for the ``callback`` "
"parameter."
msgstr ""
-#: ../../changelog.rst:81
+#: ../../changelog.rst:148
msgid "Dropped Gunicorn 0.8 support. Current supported version is 0.13."
msgstr ""
-#: ../../changelog.rst:82
+#: ../../changelog.rst:149
msgid "Added custom options to Gunicorn server."
msgstr ""
-#: ../../changelog.rst:83
+#: ../../changelog.rst:150
msgid ""
"Finally dropped support for type filters. Replace with a custom plugin of "
"needed."
msgstr ""
-#: ../../changelog.rst:87
+#: ../../changelog.rst:154
msgid "Release 0.9"
msgstr ""
-#: ../../changelog.rst:90
+#: ../../changelog.rst:157
msgid "Whats new?"
msgstr ""
-#: ../../changelog.rst:91
+#: ../../changelog.rst:158
msgid ""
"A brand new plugin-API. See :ref:`plugins` and :doc:`plugindev` for details."
msgstr ""
-#: ../../changelog.rst:92
+#: ../../changelog.rst:159
msgid ""
"The :func:`route` decorator got a lot of new features. See "
":meth:`Bottle.route` for details."
msgstr ""
-#: ../../changelog.rst:93
+#: ../../changelog.rst:160
msgid ""
"New server adapters for `gevent <http://www.gevent.org/>`_, `meinheld "
"<http://meinheld.org/>`_ and `bjoern "
"<https://github.com/jonashaag/bjoern>`_."
msgstr ""
-#: ../../changelog.rst:94
+#: ../../changelog.rst:161
msgid "Support for SimpleTAL templates."
msgstr ""
-#: ../../changelog.rst:95
+#: ../../changelog.rst:162
msgid "Better runtime exception handling for mako templates in debug mode."
msgstr ""
-#: ../../changelog.rst:96
+#: ../../changelog.rst:163
msgid "Lots of documentation, fixes and small improvements."
msgstr ""
-#: ../../changelog.rst:97
+#: ../../changelog.rst:164
msgid "A new :data:`Request.urlparts` property."
msgstr ""
-#: ../../changelog.rst:100
+#: ../../changelog.rst:167
msgid "Performance improvements"
msgstr ""
-#: ../../changelog.rst:101
+#: ../../changelog.rst:168
msgid ""
"The :class:`Router` now special-cases ``wsgi.run_once`` environments to "
"speed up CGI."
msgstr ""
-#: ../../changelog.rst:102
+#: ../../changelog.rst:169
msgid ""
"Reduced module load time by ~30% and optimized template parser. See `8ccb2d "
-"<http://github.com/bottlepy/bottle/commit/8ccb2d>`_, `f72a7c <http://github.com/bottlepy/bottle/commit/f72a7c>`_ and `b14b9a "
-"<http://github.com/bottlepy/bottle/commit/b14b9a>`_ for details."
+"</commit/8ccb2d>`_, `f72a7c </commit/f72a7c>`_ and `b14b9a "
+"</commit/b14b9a>`_ for details."
msgstr ""
-#: ../../changelog.rst:103
+#: ../../changelog.rst:170
msgid ""
"Support for \"App Caching\" on Google App Engine. See `af93ec "
-"<http://github.com/bottlepy/bottle/commit/af93ec>`_."
+"</commit/af93ec>`_."
msgstr ""
-#: ../../changelog.rst:104
+#: ../../changelog.rst:171
msgid ""
"Some of the rarely used or deprecated features are now plugins that avoid "
"overhead if the feature is not used."
msgstr ""
-#: ../../changelog.rst:107 ../../changelog.rst:118
+#: ../../changelog.rst:174 ../../changelog.rst:185
msgid "API changes"
msgstr ""
-#: ../../changelog.rst:108
+#: ../../changelog.rst:175
msgid ""
"This release is mostly backward compatible, but some APIs are marked "
"deprecated now and will be removed for the next release. Most noteworthy:"
msgstr ""
-#: ../../changelog.rst:110
+#: ../../changelog.rst:177
msgid ""
"The ``static`` route parameter is deprecated. You can escape wild-cards with"
" a backslash."
msgstr ""
-#: ../../changelog.rst:111
+#: ../../changelog.rst:178
msgid ""
"Type-based output filters are deprecated. They can easily be replaced with "
"plugins."
msgstr ""
-#: ../../changelog.rst:115
+#: ../../changelog.rst:182
msgid "Release 0.8"
msgstr ""
-#: ../../changelog.rst:119
+#: ../../changelog.rst:186
msgid "These changes may break compatibility with previous versions."
msgstr ""
-#: ../../changelog.rst:121
+#: ../../changelog.rst:188
msgid ""
"The built-in Key/Value database is not available anymore. It is marked "
"deprecated since 0.6.4"
msgstr ""
-#: ../../changelog.rst:122
+#: ../../changelog.rst:189
msgid "The Route syntax and behaviour changed."
msgstr ""
-#: ../../changelog.rst:124
+#: ../../changelog.rst:191
msgid ""
"Regular expressions must be encapsulated with ``#``. In 0.6 all non-"
"alphanumeric characters not present in the regular expression were allowed."
msgstr ""
-#: ../../changelog.rst:125
+#: ../../changelog.rst:192
msgid ""
"Regular expressions not part of a route wildcard are escaped automatically. "
"You don't have to escape dots or other regular control characters anymore. "
@@ -386,69 +639,69 @@ msgid ""
"behaviour."
msgstr ""
-#: ../../changelog.rst:127
+#: ../../changelog.rst:194
msgid ""
"The ``BreakTheBottle`` exception is gone. Use :class:`HTTPResponse` instead."
msgstr ""
-#: ../../changelog.rst:128
+#: ../../changelog.rst:195
msgid ""
"The :class:`SimpleTemplate` engine escapes HTML special characters in "
"``{{bad_html}}`` expressions automatically. Use the new ``{{!good_html}}`` "
"syntax to get old behaviour (no escaping)."
msgstr ""
-#: ../../changelog.rst:129
+#: ../../changelog.rst:196
msgid ""
"The :class:`SimpleTemplate` engine returns unicode strings instead of lists "
"of byte strings."
msgstr ""
-#: ../../changelog.rst:130
+#: ../../changelog.rst:197
msgid ""
"``bottle.optimize()`` and the automatic route optimization is obsolete."
msgstr ""
-#: ../../changelog.rst:131
+#: ../../changelog.rst:198
msgid "Some functions and attributes were renamed:"
msgstr ""
-#: ../../changelog.rst:133
+#: ../../changelog.rst:200
msgid ":attr:`Request._environ` is now :attr:`Request.environ`"
msgstr ""
-#: ../../changelog.rst:134
+#: ../../changelog.rst:201
msgid ":attr:`Response.header` is now :attr:`Response.headers`"
msgstr ""
-#: ../../changelog.rst:135
+#: ../../changelog.rst:202
msgid ":func:`default_app` is obsolete. Use :func:`app` instead."
msgstr ""
-#: ../../changelog.rst:137
+#: ../../changelog.rst:204
msgid "The default :func:`redirect` code changed from 307 to 303."
msgstr ""
-#: ../../changelog.rst:138
+#: ../../changelog.rst:205
msgid "Removed support for ``@default``. Use ``@error(404)`` instead."
msgstr ""
-#: ../../changelog.rst:142
+#: ../../changelog.rst:209
msgid "New features"
msgstr ""
-#: ../../changelog.rst:143
+#: ../../changelog.rst:210
msgid "This is an incomplete list of new features and improved functionality."
msgstr ""
-#: ../../changelog.rst:145
+#: ../../changelog.rst:212
msgid ""
"The :class:`Request` object got new properties: :attr:`Request.body`, "
":attr:`Request.auth`, :attr:`Request.url`, :attr:`Request.header`, "
":attr:`Request.forms`, :attr:`Request.files`."
msgstr ""
-#: ../../changelog.rst:146
+#: ../../changelog.rst:213
msgid ""
"The :meth:`Response.set_cookie` and :meth:`Request.get_cookie` methods are "
"now able to encode and decode python objects. This is called a *secure "
@@ -456,41 +709,41 @@ msgid ""
"client side. All pickle-able data structures are allowed."
msgstr ""
-#: ../../changelog.rst:147
+#: ../../changelog.rst:214
msgid ""
"The new :class:`Router` class drastically improves performance for setups "
"with lots of dynamic routes and supports named routes (named route + dict = "
"URL string)."
msgstr ""
-#: ../../changelog.rst:148
+#: ../../changelog.rst:215
msgid ""
"It is now possible (and recommended) to return :exc:`HTTPError` and "
":exc:`HTTPResponse` instances or other exception objects instead of raising "
"them."
msgstr ""
-#: ../../changelog.rst:149
+#: ../../changelog.rst:216
msgid ""
"The new function :func:`static_file` equals :func:`send_file` but returns a "
":exc:`HTTPResponse` or :exc:`HTTPError` instead of raising it. "
":func:`send_file` is deprecated."
msgstr ""
-#: ../../changelog.rst:150
+#: ../../changelog.rst:217
msgid ""
"New :func:`get`, :func:`post`, :func:`put` and :func:`delete` decorators."
msgstr ""
-#: ../../changelog.rst:151
+#: ../../changelog.rst:218
msgid "The :class:`SimpleTemplate` engine got full unicode support."
msgstr ""
-#: ../../changelog.rst:152
+#: ../../changelog.rst:219
msgid "Lots of non-critical bugfixes."
msgstr ""
-#: ../../changelog.rst:158
+#: ../../changelog.rst:225
msgid "Contributors"
msgstr ""
@@ -693,65 +946,69 @@ msgid "Nicolas Vanhoren"
msgstr ""
#: ../../../AUTHORS:51
-msgid "Robert Rollins"
+msgid "Oz N Tiram"
msgstr ""
#: ../../../AUTHORS:52
-msgid "rogererens"
+msgid "Robert Rollins"
msgstr ""
#: ../../../AUTHORS:53
-msgid "rwxrwx"
+msgid "rogererens"
msgstr ""
#: ../../../AUTHORS:54
-msgid "Santiago Gala"
+msgid "rwxrwx"
msgstr ""
#: ../../../AUTHORS:55
-msgid "Sean M. Collins"
+msgid "Santiago Gala"
msgstr ""
#: ../../../AUTHORS:56
-msgid "Sebastian Wollrath"
+msgid "Sean M. Collins"
msgstr ""
#: ../../../AUTHORS:57
-msgid "Seth"
+msgid "Sebastian Wollrath"
msgstr ""
#: ../../../AUTHORS:58
-msgid "Sigurd Høgsbro"
+msgid "Seth"
msgstr ""
#: ../../../AUTHORS:59
-msgid "Stuart Rackham"
+msgid "Sigurd Høgsbro"
msgstr ""
#: ../../../AUTHORS:60
-msgid "Sun Ning"
+msgid "Stuart Rackham"
msgstr ""
#: ../../../AUTHORS:61
-msgid "Tomás A. Schertel"
+msgid "Sun Ning"
msgstr ""
#: ../../../AUTHORS:62
-msgid "Tristan Zajonc"
+msgid "Tomás A. Schertel"
msgstr ""
#: ../../../AUTHORS:63
-msgid "voltron"
+msgid "Tristan Zajonc"
msgstr ""
#: ../../../AUTHORS:64
-msgid "Wieland Hoffmann"
+msgid "voltron"
msgstr ""
#: ../../../AUTHORS:65
-msgid "zombat"
+msgid "Wieland Hoffmann"
msgstr ""
#: ../../../AUTHORS:66
+msgid "zombat"
+msgstr ""
+
+#: ../../../AUTHORS:67
msgid "Thiago Avelino"
msgstr ""
diff --git a/docs/_locale/pt_BR/LC_MESSAGES/configuration.po b/docs/_locale/pt_BR/LC_MESSAGES/configuration.po
index 71af62e..043653b 100644
--- a/docs/_locale/pt_BR/LC_MESSAGES/configuration.po
+++ b/docs/_locale/pt_BR/LC_MESSAGES/configuration.po
@@ -1,5 +1,5 @@
# SOME DESCRIPTIVE TITLE.
-# Copyright (C) 2009-2017, Marcel Hellkamp
+# Copyright (C) 2009-2020, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
#
# Translators:
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: bottle\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-12-19 14:15+0100\n"
-"PO-Revision-Date: 2015-12-13 20:58+0000\n"
+"POT-Creation-Date: 2020-12-31 18:35+0100\n"
+"PO-Revision-Date: 2020-12-31 17:35+0000\n"
"Last-Translator: defnull <marc@gsites.de>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/bottle/bottle/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
@@ -106,22 +106,46 @@ msgid ""
"configuration::"
msgstr ""
-#: ../../configuration.rst:84
+#: ../../configuration.rst:85
+msgid "Loading Configuration from a python module"
+msgstr ""
+
+#: ../../configuration.rst:89
+msgid ""
+"Loading configuration from a Python module is a common pattern for Python "
+"programs and frameworks. Bottle assumes that configuration keys are all "
+"upper case:"
+msgstr ""
+
+#: ../../configuration.rst:98
+msgid ""
+"You can load the this Python module with :met:`ConfigDict.load_module`::"
+msgstr ""
+
+#: ../../configuration.rst:107
+msgid ""
+"Note the second parameter to disable loading as namespaced items as in "
+":meth:`ConfigDict.load_dict`. By default, loading from a Python module will "
+"call this method, unless you specifically call this method with `False` as "
+"the second argument."
+msgstr ""
+
+#: ../../configuration.rst:110
msgid "Loading Configuration from a nested :class:`dict`"
msgstr ""
-#: ../../configuration.rst:88
+#: ../../configuration.rst:114
msgid ""
"Another useful method is :meth:`ConfigDict.load_dict`. This method takes an "
"entire structure of nested dictionaries and turns it into a flat list of "
"keys and values with namespaced keys::"
msgstr ""
-#: ../../configuration.rst:109
+#: ../../configuration.rst:135
msgid "Listening to configuration changes"
msgstr ""
-#: ../../configuration.rst:113
+#: ../../configuration.rst:139
msgid ""
"The ``config`` hook on the application object is triggered each time a value"
" in :attr:`Bottle.config` is changed. This hook can be used to react on "
@@ -133,37 +157,37 @@ msgid ""
"preserved."
msgstr ""
-#: ../../configuration.rst:122
+#: ../../configuration.rst:148
msgid ""
"The hook callbacks cannot *change* the value that is to be stored to the "
"dictionary. That is what filters are for."
msgstr ""
-#: ../../configuration.rst:128
+#: ../../configuration.rst:154
msgid "Filters and other Meta Data"
msgstr ""
-#: ../../configuration.rst:132
+#: ../../configuration.rst:158
msgid ""
":class:`ConfigDict` allows you to store meta data along with configuration "
"keys. Two meta fields are currently defined:"
msgstr ""
-#: ../../configuration.rst:136
+#: ../../configuration.rst:162
msgid "help"
msgstr ""
-#: ../../configuration.rst:135
+#: ../../configuration.rst:161
msgid ""
"A help or description string. May be used by debugging, introspection or "
"admin tools to help the site maintainer configuring their application."
msgstr ""
-#: ../../configuration.rst:139
+#: ../../configuration.rst:165
msgid "filter"
msgstr ""
-#: ../../configuration.rst:139
+#: ../../configuration.rst:165
msgid ""
"A callable that accepts and returns a single value. If a filter is defined "
"for a key, any new value stored to that key is first passed through the "
@@ -171,37 +195,46 @@ msgid ""
"type, check for invalid values (throw a ValueError) or trigger side effects."
msgstr ""
-#: ../../configuration.rst:141
+#: ../../configuration.rst:167
msgid ""
"This feature is most useful for plugins. They can validate their config "
"parameters or trigger side effects using filters and document their "
"configuration via ``help`` fields::"
msgstr ""
-#: ../../configuration.rst:163
+#: ../../configuration.rst:189
msgid "API Documentation"
msgstr ""
#: ../../../bottle.pydocstring of bottle.ConfigDict:1
msgid ""
"A dict-like configuration storage with additional support for namespaces, "
-"validators, meta-data, on_change listeners and more."
+"validators, meta-data, overlays and more."
msgstr ""
-#: ../../../bottle.pydocstring of bottle.ConfigDict.load_module:1
+#: ../../../bottle.pydocstring of bottle.ConfigDict:4
msgid ""
-"Load values from a Python module. :param squash: Squash nested dicts into "
-"namespaces by using"
+"This dict-like class is heavily optimized for read access. All read-only "
+"methods as well as item access should be as fast as the built-in dict."
+msgstr ""
+
+#: ../../../bottle.pydocstring of bottle.ConfigDict.load_module:1
+msgid "Load values from a Python module."
msgstr ""
#: ../../../bottle.pydocstring of bottle.ConfigDict.load_module:3
-msgid "load_dict(), otherwise use update()"
+msgid "Example modue ``config.py``::"
msgstr ""
-#: ../../../bottle.pydocstring of bottle.ConfigDict.load_module:4
+#: ../../../bottle.pydocstring of bottle.ConfigDict.load_module:0
+#: ../../../bottle.pydocstring of bottle.ConfigDict.load_config:0
+msgid "Parameters"
+msgstr ""
+
+#: ../../../bottle.pydocstring of bottle.ConfigDict.load_module:17
msgid ""
-"Example: load_config('my.app.settings', True) Example: "
-"load_config('my.app.settings', False)"
+"If true (default), dictionary values are assumed to represent namespaces "
+"(see :meth:`load_dict`)."
msgstr ""
#: ../../../bottle.pydocstring of bottle.ConfigDict.load_config:1
@@ -210,9 +243,41 @@ msgstr ""
#: ../../../bottle.pydocstring of bottle.ConfigDict.load_config:3
msgid ""
-"If the config file contains sections, their names are used as namespaces for"
-" the values within. The two special sections ``DEFAULT`` and ``bottle`` "
-"refer to the root namespace (no prefix)."
+"A configuration file consists of sections, each led by a ``[section]`` "
+"header, followed by key/value entries separated by either ``=`` or ``:``. "
+"Section names and keys are case-insensitive. Leading and trailing whitespace"
+" is removed from keys and values. Values can be omitted, in which case the "
+"key/value delimiter may also be left out. Values can also span multiple "
+"lines, as long as they are indented deeper than the first line of the value."
+" Commands are prefixed by ``#`` or ``;`` and may only appear on their own on"
+" an otherwise empty line."
+msgstr ""
+
+#: ../../../bottle.pydocstring of bottle.ConfigDict.load_config:13
+msgid ""
+"Both section and key names may contain dots (``.``) as namespace separators."
+" The actual configuration parameter name is constructed by joining section "
+"name and key name together and converting to lower case."
+msgstr ""
+
+#: ../../../bottle.pydocstring of bottle.ConfigDict.load_config:18
+msgid ""
+"The special sections ``bottle`` and ``ROOT`` refer to the root namespace and"
+" the ``DEFAULT`` section defines default values for all other sections."
+msgstr ""
+
+#: ../../../bottle.pydocstring of bottle.ConfigDict.load_config:22
+msgid "With Python 3, extended string interpolation is enabled."
+msgstr ""
+
+#: ../../../bottle.pydocstring of bottle.ConfigDict.load_config:24
+msgid "The path of a config file, or a list of paths."
+msgstr ""
+
+#: ../../../bottle.pydocstring of bottle.ConfigDict.load_config:25
+msgid ""
+"All keyword parameters are passed to the underlying "
+":class:`python:configparser.ConfigParser` constructor call."
msgstr ""
#: ../../../bottle.pydocstring of bottle.ConfigDict.load_dict:1
@@ -224,8 +289,15 @@ msgstr ""
#: ../../../bottle.pydocstring of bottle.ConfigDict.update:1
msgid ""
"If the first parameter is a string, all keys are prefixed with this "
-"namespace. Apart from that it works just as the usual dict.update(). "
-"Example: ``update('some.namespace', key='value')``"
+"namespace. Apart from that it works just as the usual dict.update()."
+msgstr ""
+
+#: ../../../bottle.pydocstring of bottle.ConfigDict.setdefault:1
+msgid "Insert key with a value of default if key is not in the dictionary."
+msgstr ""
+
+#: ../../../bottle.pydocstring of bottle.ConfigDict.setdefault:3
+msgid "Return the value for key if key is in the dictionary, else default."
msgstr ""
#: ../../../bottle.pydocstring of bottle.ConfigDict.meta_get:1
diff --git a/docs/_locale/pt_BR/LC_MESSAGES/contact.po b/docs/_locale/pt_BR/LC_MESSAGES/contact.po
index a48912c..7c6dfce 100644
--- a/docs/_locale/pt_BR/LC_MESSAGES/contact.po
+++ b/docs/_locale/pt_BR/LC_MESSAGES/contact.po
@@ -1,5 +1,5 @@
# SOME DESCRIPTIVE TITLE.
-# Copyright (C) 2009-2017, Marcel Hellkamp
+# Copyright (C) 2009-2020, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
#
# Translators:
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: bottle\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-12-19 14:15+0100\n"
-"PO-Revision-Date: 2015-01-22 19:18+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2020-12-31 18:35+0100\n"
+"PO-Revision-Date: 2020-12-31 17:35+0000\n"
+"Last-Translator: defnull <marc@gsites.de>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/bottle/bottle/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -22,7 +22,7 @@ msgid "Contact"
msgstr ""
#: ../../contact.rst:6
-msgid "About the Autor"
+msgid "About the Author"
msgstr ""
#: ../../contact.rst:7
@@ -39,7 +39,7 @@ msgstr ""
#: ../../contact.rst:10
msgid "About Bottle"
-msgstr ""
+msgstr "Sobre o Bottle"
#: ../../contact.rst:11
msgid ""
diff --git a/docs/_locale/pt_BR/LC_MESSAGES/deployment.po b/docs/_locale/pt_BR/LC_MESSAGES/deployment.po
index d3d027d..1f583db 100644
--- a/docs/_locale/pt_BR/LC_MESSAGES/deployment.po
+++ b/docs/_locale/pt_BR/LC_MESSAGES/deployment.po
@@ -1,5 +1,5 @@
# SOME DESCRIPTIVE TITLE.
-# Copyright (C) 2009-2017, Marcel Hellkamp
+# Copyright (C) 2009-2020, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
#
# Translators:
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: bottle\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-12-19 14:15+0100\n"
-"PO-Revision-Date: 2015-12-13 20:58+0000\n"
+"POT-Creation-Date: 2020-12-31 18:35+0100\n"
+"PO-Revision-Date: 2020-12-31 17:35+0000\n"
"Last-Translator: defnull <marc@gsites.de>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/bottle/bottle/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
@@ -30,42 +30,43 @@ msgstr ""
#: ../../deployment.rst:31
msgid ""
-"To get your application available to the outside world, specify the IP of "
-"the interface the server should listen to (e.g. ``run(host='192.168.0.1')``)"
-" or let the server listen to all interfaces at once (e.g. "
-"``run(host='0.0.0.0')``). The listening port can be changed in a similar "
-"way, but you need root or admin rights to choose a port below 1024. Port 80 "
-"is the standard for HTTP servers::"
+"To get your application available to the outside world, specify the IP the "
+"server should listen to (e.g. ``run(host='192.168.0.1')``) or let the server"
+" listen to all interfaces at once (e.g. ``run(host='0.0.0.0')``). The "
+"listening port can be changed in a similar way, but you need root or admin "
+"rights to choose a port below 1024. Port 80 is the standard for HTTP "
+"servers::"
msgstr ""
-#: ../../deployment.rst:36
+#: ../../deployment.rst:37
msgid "Server Options"
msgstr ""
-#: ../../deployment.rst:38
+#: ../../deployment.rst:39
msgid ""
"The built-in default server is based on `wsgiref WSGIServer "
"<http://docs.python.org/library/wsgiref.html#module-"
"wsgiref.simple_server>`_. This non-threading HTTP server is perfectly fine "
-"for development and early production, but may become a performance "
-"bottleneck when server load increases. There are three ways to eliminate "
-"this bottleneck:"
+"for development, but may become a performance bottleneck when server load "
+"increases. There are three ways to eliminate this bottleneck:"
msgstr ""
-#: ../../deployment.rst:40
-msgid "Use a different server that is either multi-threaded or asynchronous."
+#: ../../deployment.rst:41
+msgid ""
+"Use a different server that is either multi-threaded or supports "
+"asynchronous IO."
msgstr ""
-#: ../../deployment.rst:41
+#: ../../deployment.rst:42
msgid ""
"Start multiple server processes and spread the load with a load-balancer."
msgstr ""
-#: ../../deployment.rst:42
+#: ../../deployment.rst:43
msgid "Do both."
msgstr ""
-#: ../../deployment.rst:44
+#: ../../deployment.rst:45
msgid ""
"**Multi-threaded** servers are the 'classic' way to do it. They are very "
"robust, reasonably fast and easy to manage. As a drawback, they can only "
@@ -76,15 +77,15 @@ msgid ""
"image processing)."
msgstr ""
-#: ../../deployment.rst:46
+#: ../../deployment.rst:47
msgid ""
-"**Asynchronous** servers are very fast, can handle a virtually unlimited "
+"**Asynchronous IO** servers are very fast, can handle a virtually unlimited "
"number of concurrent connections and are easy to manage. To take full "
"advantage of their potential, you need to design your application "
"accordingly and understand the concepts of the specific server."
msgstr ""
-#: ../../deployment.rst:48
+#: ../../deployment.rst:49
msgid ""
"**Multi-processing** (forking) servers are not limited by the GIL and "
"utilize more than one CPU core, but make communication between server "
@@ -94,105 +95,101 @@ msgid ""
"there are good tutorials available."
msgstr ""
-#: ../../deployment.rst:51
+#: ../../deployment.rst:52
msgid "Switching the Server Backend"
msgstr ""
-#: ../../deployment.rst:53
+#: ../../deployment.rst:54
msgid ""
"The easiest way to increase performance is to install a multi-threaded "
"server library like paste_ or cherrypy_ and tell Bottle to use that instead "
"of the single-threaded default server::"
msgstr ""
-#: ../../deployment.rst:57
+#: ../../deployment.rst:58
msgid ""
"Bottle ships with a lot of ready-to-use adapters for the most common WSGI "
"servers and automates the setup process. Here is an incomplete list:"
msgstr ""
-#: ../../deployment.rst:60
+#: ../../deployment.rst:61
msgid "Name"
msgstr ""
-#: ../../deployment.rst:60
+#: ../../deployment.rst:61
msgid "Homepage"
msgstr ""
-#: ../../deployment.rst:60
+#: ../../deployment.rst:61
msgid "Description"
msgstr ""
-#: ../../deployment.rst:62
+#: ../../deployment.rst:63
msgid "cgi"
msgstr ""
-#: ../../deployment.rst:62
+#: ../../deployment.rst:63
msgid "Run as CGI script"
msgstr ""
-#: ../../deployment.rst:63
+#: ../../deployment.rst:64
msgid "flup"
msgstr ""
-#: ../../deployment.rst:63
+#: ../../deployment.rst:64
msgid "flup_"
msgstr ""
-#: ../../deployment.rst:63
+#: ../../deployment.rst:64
msgid "Run as FastCGI process"
msgstr ""
-#: ../../deployment.rst:64
+#: ../../deployment.rst:65
msgid "gae"
msgstr ""
-#: ../../deployment.rst:64
+#: ../../deployment.rst:65
msgid "gae_"
msgstr ""
-#: ../../deployment.rst:64
+#: ../../deployment.rst:65
msgid "Helper for Google App Engine deployments"
msgstr ""
-#: ../../deployment.rst:65
+#: ../../deployment.rst:66
msgid "wsgiref"
msgstr ""
-#: ../../deployment.rst:65
+#: ../../deployment.rst:66
msgid "wsgiref_"
msgstr ""
-#: ../../deployment.rst:65
+#: ../../deployment.rst:66
msgid "Single-threaded default server"
msgstr ""
-#: ../../deployment.rst:66
+#: ../../deployment.rst:67
msgid "cherrypy"
msgstr ""
-#: ../../deployment.rst:66
+#: ../../deployment.rst:67
msgid "cherrypy_"
msgstr ""
-#: ../../deployment.rst:66
+#: ../../deployment.rst:67
msgid "Multi-threaded and very stable"
msgstr ""
-#: ../../deployment.rst:67
+#: ../../deployment.rst:68
msgid "paste"
msgstr ""
-#: ../../deployment.rst:67
+#: ../../deployment.rst:68
msgid "paste_"
msgstr ""
-#: ../../deployment.rst:67
-msgid "Multi-threaded, stable, tried and tested"
-msgstr ""
-
#: ../../deployment.rst:68
-msgid "Multi-threaded"
+msgid "Multi-threaded, stable, tried and tested"
msgstr ""
#: ../../deployment.rst:69
@@ -252,78 +249,66 @@ msgid "diesel_"
msgstr ""
#: ../../deployment.rst:74
-msgid "fapws3"
-msgstr ""
-
-#: ../../deployment.rst:74
-msgid "fapws3_"
-msgstr ""
-
-#: ../../deployment.rst:74
-msgid "Asynchronous (network side only), written in C"
-msgstr ""
-
-#: ../../deployment.rst:75
msgid "tornado"
msgstr ""
-#: ../../deployment.rst:75
+#: ../../deployment.rst:74
msgid "tornado_"
msgstr ""
-#: ../../deployment.rst:75
+#: ../../deployment.rst:74
msgid "Asynchronous, powers some parts of Facebook"
msgstr ""
-#: ../../deployment.rst:76
+#: ../../deployment.rst:75
msgid "twisted"
msgstr ""
-#: ../../deployment.rst:76
+#: ../../deployment.rst:75
msgid "twisted_"
msgstr ""
-#: ../../deployment.rst:76
+#: ../../deployment.rst:75
msgid "Asynchronous, well tested but... twisted"
msgstr ""
-#: ../../deployment.rst:77
+#: ../../deployment.rst:76
msgid "meinheld"
msgstr ""
-#: ../../deployment.rst:77
+#: ../../deployment.rst:76
msgid "meinheld_"
msgstr ""
-#: ../../deployment.rst:77
+#: ../../deployment.rst:76
msgid "Asynchronous, partly written in C"
msgstr ""
-#: ../../deployment.rst:78
+#: ../../deployment.rst:77
msgid "bjoern"
msgstr ""
-#: ../../deployment.rst:78
+#: ../../deployment.rst:77
msgid "bjoern_"
msgstr ""
-#: ../../deployment.rst:78
+#: ../../deployment.rst:77
msgid "Asynchronous, very fast and written in C"
msgstr ""
-#: ../../deployment.rst:79
+#: ../../deployment.rst:78
msgid "auto"
msgstr ""
-#: ../../deployment.rst:79
+#: ../../deployment.rst:78
msgid "Automatically selects an available server adapter"
msgstr ""
-#: ../../deployment.rst:82
+#: ../../deployment.rst:81
msgid "The full list is available through :data:`server_names`."
msgstr ""
-#: ../../deployment.rst:84
+#: ../../deployment.rst:83
msgid ""
"If there is no adapter for your favorite server or if you need more control "
"over the server setup, you may want to start the server manually. Refer to "
@@ -331,41 +316,50 @@ msgid ""
" for paste_::"
msgstr ""
-#: ../../deployment.rst:93
+#: ../../deployment.rst:91
msgid "Apache mod_wsgi"
msgstr ""
-#: ../../deployment.rst:95
+#: ../../deployment.rst:93
msgid ""
"Instead of running your own HTTP server from within Bottle, you can attach "
"Bottle applications to an `Apache server <apache>`_ using mod_wsgi_."
msgstr ""
-#: ../../deployment.rst:97
+#: ../../deployment.rst:95
msgid ""
"All you need is an ``app.wsgi`` file that provides an ``application`` "
"object. This object is used by mod_wsgi to start your application and should"
" be a WSGI-compatible Python callable."
msgstr ""
-#: ../../deployment.rst:99
+#: ../../deployment.rst:97
msgid "File ``/var/www/yourapp/app.wsgi``::"
msgstr ""
-#: ../../deployment.rst:110
+#: ../../deployment.rst:108
msgid "The Apache configuration may look like this::"
msgstr ""
#: ../../deployment.rst:126
+msgid "uWSGI"
+msgstr ""
+
+#: ../../deployment.rst:128
msgid ""
-"With newer versions of Apache (2.4) use a configuration similar to this::"
+"uWSGI_ is a modern alternative to FastCGI and the recommended deployment "
+"option on servers like nginx_, lighttpd_, and cherokee_. The uWSGI project "
+"provides an application server that runs your application, and defines a "
+"protocol that frontend webservers can speak to. Have a look at the excellent"
+" `Quickstart for Python/WSGI applications <https://uwsgi-"
+"docs.readthedocs.io/en/latest/WSGIquickstart.html>`_."
msgstr ""
-#: ../../deployment.rst:144
+#: ../../deployment.rst:132
msgid "Google AppEngine"
msgstr ""
-#: ../../deployment.rst:148
+#: ../../deployment.rst:136
msgid ""
"New App Engine applications using the Python 2.7 runtime environment support"
" any WSGI application and should be configured to use the Bottle application"
@@ -373,40 +367,31 @@ msgid ""
"``myapp.py``::"
msgstr ""
-#: ../../deployment.rst:158
+#: ../../deployment.rst:146
msgid ""
"Then you can configure App Engine's ``app.yaml`` to use the ``app`` object "
"like so::"
msgstr ""
-#: ../../deployment.rst:169
-msgid ""
-"Bottle also provides a ``gae`` server adapter for legacy App Engine "
-"applications using the Python 2.5 runtime environment. It works similar to "
-"the ``cgi`` adapter in that it does not start a new HTTP server, but "
-"prepares and optimizes your application for Google App Engine and makes sure"
-" it conforms to their API::"
-msgstr ""
-
-#: ../../deployment.rst:173
+#: ../../deployment.rst:158
msgid ""
"It is always a good idea to let GAE serve static files directly. Here is "
"example for a working ``app.yaml`` (using the legacy Python 2.5 runtime "
"environment)::"
msgstr ""
-#: ../../deployment.rst:189
+#: ../../deployment.rst:175
msgid "Load Balancer (Manual Setup)"
msgstr ""
-#: ../../deployment.rst:191
+#: ../../deployment.rst:177
msgid ""
"A single Python process can utilize only one CPU at a time, even if there "
"are more CPU cores available. The trick is to balance the load between "
"multiple independent Python processes to utilize all of your CPU cores."
msgstr ""
-#: ../../deployment.rst:193
+#: ../../deployment.rst:179
msgid ""
"Instead of a single Bottle application server, you start one instance for "
"each CPU core available using different local port (localhost:8080, 8081, "
@@ -417,29 +402,29 @@ msgid ""
"spread out the load between different physical servers."
msgstr ""
-#: ../../deployment.rst:195
+#: ../../deployment.rst:181
msgid ""
"One of the fastest load balancers available is Pound_ but most common web "
"servers have a proxy-module that can do the work just fine."
msgstr ""
-#: ../../deployment.rst:197
+#: ../../deployment.rst:183
msgid "Pound example::"
msgstr ""
-#: ../../deployment.rst:215
+#: ../../deployment.rst:201
msgid "Apache example::"
msgstr ""
-#: ../../deployment.rst:223
+#: ../../deployment.rst:209
msgid "Lighttpd example::"
msgstr ""
-#: ../../deployment.rst:235
+#: ../../deployment.rst:221
msgid "Good old CGI"
msgstr ""
-#: ../../deployment.rst:237
+#: ../../deployment.rst:223
msgid ""
"A CGI server starts a new process for each request. This adds a lot of "
"overhead but is sometimes the only option, especially on cheap hosting "
diff --git a/docs/_locale/pt_BR/LC_MESSAGES/development.po b/docs/_locale/pt_BR/LC_MESSAGES/development.po
index 0fc0403..0cd7f17 100644
--- a/docs/_locale/pt_BR/LC_MESSAGES/development.po
+++ b/docs/_locale/pt_BR/LC_MESSAGES/development.po
@@ -1,5 +1,5 @@
# SOME DESCRIPTIVE TITLE.
-# Copyright (C) 2009-2017, Marcel Hellkamp
+# Copyright (C) 2009-2020, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
#
# Translators:
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: bottle\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-12-19 14:15+0100\n"
-"PO-Revision-Date: 2015-12-13 20:58+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2020-12-31 18:35+0100\n"
+"PO-Revision-Date: 2020-12-31 17:35+0000\n"
+"Last-Translator: defnull <marc@gsites.de>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/bottle/bottle/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -185,7 +185,7 @@ msgid "The source repository is structured as follows:"
msgstr ""
#: ../../development.rst:55
-msgid "master branch"
+msgid "``master`` branch"
msgstr ""
#: ../../development.rst:55
@@ -195,7 +195,7 @@ msgid ""
msgstr ""
#: ../../development.rst:58
-msgid "release-x.y branches"
+msgid "``release-x.y`` branches"
msgstr ""
#: ../../development.rst:58
@@ -209,33 +209,22 @@ msgid ""
"branches, so you can keep up with important changes."
msgstr ""
-#: ../../development.rst:61
-msgid "bugfix_name-x.y branches"
-msgstr ""
-
-#: ../../development.rst:61
-msgid ""
-"These branches are only temporary and used to develop and share non-trivial "
-"bug-fixes for existing releases. They are merged into the corresponding "
-"release branch and deleted soon after that."
-msgstr ""
-
-#: ../../development.rst:65
+#: ../../development.rst:62
msgid "Feature branches"
msgstr ""
-#: ../../development.rst:64
+#: ../../development.rst:61
msgid ""
"All other branches are feature branches. These are based on the master "
"branch and only live as long as they are still active and not merged back "
"into ``master``."
msgstr ""
-#: ../../development.rst:68
+#: ../../development.rst:65
msgid "What does this mean for a developer?"
msgstr ""
-#: ../../development.rst:69
+#: ../../development.rst:66
msgid ""
"If you want to add a feature, create a new branch from ``master``. If you "
"want to fix a bug, branch ``release-x.y`` for each affected release. Please "
@@ -244,17 +233,17 @@ msgid ""
"page."
msgstr ""
-#: ../../development.rst:71
+#: ../../development.rst:68
msgid ""
"Oh, and never ever change the release number. We'll do that on integration. "
"You never know in which order we pull pending requests anyway :)"
msgstr ""
-#: ../../development.rst:75
+#: ../../development.rst:72
msgid "What does this mean for a maintainer ?"
msgstr ""
-#: ../../development.rst:76
+#: ../../development.rst:73
msgid ""
"Watch the tags (and the mailing list) for bug-fixes and new releases. If you"
" want to fetch a specific release from the git repository, trust the tags, "
@@ -262,11 +251,11 @@ msgid ""
"but a tag marks the exact commit which changed the version number."
msgstr ""
-#: ../../development.rst:80
+#: ../../development.rst:77
msgid "Submitting Patches"
msgstr ""
-#: ../../development.rst:82
+#: ../../development.rst:79
msgid ""
"The best way to get your changes integrated into the main development branch"
" is to fork the main repository at github, create a new feature-branch, "
@@ -276,57 +265,57 @@ msgid ""
"follow some basic rules:"
msgstr ""
-#: ../../development.rst:84
+#: ../../development.rst:81
msgid ""
"**Documentation:** Tell us what your patch does. Comment your code. If you "
"introduced a new feature, add to the documentation so others can learn about"
" it."
msgstr ""
-#: ../../development.rst:85
+#: ../../development.rst:82
msgid ""
"**Test:** Write tests to prove that your code works as expected and does not"
" break anything. If you fixed a bug, write at least one test-case that "
"triggers the bug. Make sure that all tests pass before you submit a patch."
msgstr ""
-#: ../../development.rst:86
+#: ../../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."
msgstr ""
-#: ../../development.rst:87
+#: ../../development.rst:84
msgid ""
"**Sync with upstream:** If the ``upstream/master`` branch changed while you "
"were working on your patch, rebase or pull to make sure that your patch "
"still applies without conflicts."
msgstr ""
-#: ../../development.rst:91
+#: ../../development.rst:88
msgid "Building the Documentation"
msgstr ""
-#: ../../development.rst:93
+#: ../../development.rst:90
msgid ""
"You need a recent version of Sphinx to build the documentation. The "
"recommended way is to install :command:`virtualenv` using your distribution "
"package repository and install sphinx manually to get an up-to-date version."
msgstr ""
-#: ../../development.rst:124
+#: ../../development.rst:121
msgid "GIT Workflow Examples"
msgstr ""
-#: ../../development.rst:126
+#: ../../development.rst:123
msgid ""
"The following examples assume that you have an (free) `github account "
"<https://github.com>`_. This is not mandatory, but makes things a lot "
"easier."
msgstr ""
-#: ../../development.rst:128
+#: ../../development.rst:125
msgid ""
"First of all you need to create a fork (a personal clone) of the official "
"repository. To do this, you simply click the \"fork\" button on the `bottle "
@@ -334,7 +323,7 @@ msgid ""
"you will be presented with a short introduction to your new repository."
msgstr ""
-#: ../../development.rst:130
+#: ../../development.rst:127
msgid ""
"The fork you just created is hosted at github and read-able by everyone, but"
" write-able only by you. Now you need to clone the fork locally to actually "
@@ -342,7 +331,7 @@ msgid ""
" the public (read-only) one::"
msgstr ""
-#: ../../development.rst:134
+#: ../../development.rst:131
msgid ""
"Once the clone is complete your repository will have a remote named "
"\"origin\" that points to your fork on github. Don’t let the name confuse "
@@ -351,18 +340,18 @@ msgid ""
"\"upstream\"::"
msgstr ""
-#: ../../development.rst:140
+#: ../../development.rst:137
msgid ""
"Note that \"upstream\" is a public clone URL, which is read-only. You cannot"
" push changes directly to it. Instead, we will pull from your public "
"repository. This is described later."
msgstr ""
-#: ../../development.rst:143
+#: ../../development.rst:140
msgid "Submit a Feature"
msgstr ""
-#: ../../development.rst:144
+#: ../../development.rst:141
msgid ""
"New features are developed in separate feature-branches to make integration "
"easy. Because they are going to be integrated into the ``master`` branch, "
@@ -370,20 +359,20 @@ msgid ""
"type the following::"
msgstr ""
-#: ../../development.rst:148
+#: ../../development.rst:145
msgid ""
"Now implement your feature, write tests, update the documentation, make sure"
" that all tests pass and commit your changes::"
msgstr ""
-#: ../../development.rst:152
+#: ../../development.rst:149
msgid ""
"If the ``upstream/master`` branch changed in the meantime, there may be "
"conflicts with your changes. To solve these, 'rebase' your feature-branch "
"onto the top of the updated ``upstream/master`` branch::"
msgstr ""
-#: ../../development.rst:157
+#: ../../development.rst:154
msgid ""
"This is equivalent to undoing all your changes, updating your branch to the "
"latest version and reapplying all your patches again. If you released your "
@@ -392,13 +381,13 @@ msgid ""
"the tests again and commit."
msgstr ""
-#: ../../development.rst:159
+#: ../../development.rst:156
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 ""
-#: ../../development.rst:163
+#: ../../development.rst:160
msgid ""
"After you’ve pushed your commit(s) you need to inform us about the new "
"feature. One way is to send a pull-request using github. Another way would "
@@ -407,39 +396,39 @@ msgid ""
"for free :)"
msgstr ""
-#: ../../development.rst:165
+#: ../../development.rst:162
msgid ""
"If we accept your patch, we will integrate it into the official development "
"branch and make it part of the next release."
msgstr ""
-#: ../../development.rst:168
+#: ../../development.rst:165
msgid "Fix a Bug"
msgstr ""
-#: ../../development.rst:169
+#: ../../development.rst:166
msgid ""
"The workflow for bug-fixes is very similar to the one for features, but "
"there are some differences:"
msgstr ""
-#: ../../development.rst:171
+#: ../../development.rst:168
msgid ""
"Branch off of the affected release branches instead of just the development "
"branch."
msgstr ""
-#: ../../development.rst:172
+#: ../../development.rst:169
msgid "Write at least one test-case that triggers the bug."
msgstr ""
-#: ../../development.rst:173
+#: ../../development.rst:170
msgid ""
"Do this for each affected branch including ``upstream/master`` if it is "
"affected. ``git cherry-pick`` may help you reducing repetitive work."
msgstr ""
-#: ../../development.rst:174
+#: ../../development.rst:171
msgid ""
"Name your branch after the release it is based on to avoid confusion. "
"Examples: ``my_bugfix-x.y`` or ``my_bugfix-dev``."
diff --git a/docs/_locale/pt_BR/LC_MESSAGES/faq.po b/docs/_locale/pt_BR/LC_MESSAGES/faq.po
index c4b3ee3..173dd0f 100644
--- a/docs/_locale/pt_BR/LC_MESSAGES/faq.po
+++ b/docs/_locale/pt_BR/LC_MESSAGES/faq.po
@@ -1,15 +1,16 @@
# SOME DESCRIPTIVE TITLE.
-# Copyright (C) 2009-2017, Marcel Hellkamp
+# Copyright (C) 2009-2020, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
#
# Translators:
+# Claudio Rogerio Carvalho Filho <excriptbrasil@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: bottle\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-12-19 14:15+0100\n"
-"PO-Revision-Date: 2015-01-22 19:19+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2020-12-31 18:35+0100\n"
+"PO-Revision-Date: 2020-12-31 17:35+0000\n"
+"Last-Translator: defnull <marc@gsites.de>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/bottle/bottle/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -19,11 +20,11 @@ msgstr ""
#: ../../faq.rst:10
msgid "Frequently Asked Questions"
-msgstr ""
+msgstr "Perguntas Frequentes"
#: ../../faq.rst:13
msgid "About Bottle"
-msgstr ""
+msgstr "Sobre o Bottle"
#: ../../faq.rst:16
msgid "Is bottle suitable for complex applications?"
@@ -67,11 +68,11 @@ msgstr ""
#: ../../faq.rst:40
msgid ""
"In :ref:`dynamic route syntax <tutorial-dynamic-routes>`, 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 to "
"``[^/]+`` 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 "
-"``/images/:filename`` won't."
+"``/images/<filepath:path>`` would match ``/images/icons/error.png`` but "
+"``/images/<filename>`` won't."
msgstr ""
#: ../../faq.rst:43
diff --git a/docs/_locale/pt_BR/LC_MESSAGES/index.po b/docs/_locale/pt_BR/LC_MESSAGES/index.po
index 5d78776..ccb9ccd 100644
--- a/docs/_locale/pt_BR/LC_MESSAGES/index.po
+++ b/docs/_locale/pt_BR/LC_MESSAGES/index.po
@@ -1,19 +1,19 @@
# SOME DESCRIPTIVE TITLE.
-# Copyright (C) 2009-2017, Marcel Hellkamp
+# Copyright (C) 2009-2020, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
#
# Translators:
# alephmelo <alephmelo@icloud.com>, 2015
# Igor P. Leroy <ip.leroy@gmail.com>, 2015
# Igor P. Leroy <ip.leroy@gmail.com>, 2015
-# Thiago Avelino <thiago@avelino.xxx>, 2015
+# Thiago Avelino <t@avelino.xxx>, 2015
msgid ""
msgstr ""
"Project-Id-Version: bottle\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-12-19 14:15+0100\n"
-"PO-Revision-Date: 2015-12-14 18:04+0000\n"
-"Last-Translator: alephmelo <alephmelo@icloud.com>\n"
+"POT-Creation-Date: 2020-12-31 18:35+0100\n"
+"PO-Revision-Date: 2020-12-31 17:35+0000\n"
+"Last-Translator: defnull <marc@gsites.de>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/bottle/bottle/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -21,112 +21,116 @@ msgstr ""
"Language: pt_BR\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: ../../index.rst:21
+#: ../../index.rst:20
msgid "Bottle: Python Web Framework"
msgstr "Bottle: Python Web Framework"
-#: ../../index.rst:23
+#: ../../index.rst:22
msgid ""
"Bottle is a fast, simple and lightweight WSGI_ micro web-framework for "
"Python_. It is distributed as a single file module and has no dependencies "
"other than the `Python Standard Library <http://docs.python.org/library/>`_."
msgstr "Bottle é um simples, rápido, e leve WSGI_ micro web-framework para Python_. Ele é distribuído como um único arquivo (módulo) e não tem dependências que além `Biblioteca padrão do Python <http://docs.python.org/library/>`_."
-#: ../../index.rst:26
+#: ../../index.rst:25
msgid ""
"**Routing:** Requests to function-call mapping with support for clean and "
"dynamic URLs."
msgstr "**Rotas:** Solicitações de chamada de função de mapeamento com suporte para URLs limpas e dinâmicos."
-#: ../../index.rst:27
+#: ../../index.rst:26
msgid ""
"**Templates:** Fast and pythonic :ref:`built-in template engine <tutorial-"
"templates>` and support for mako_, jinja2_ and cheetah_ templates."
msgstr "**Templates:**Rápido e pythonico :ref:`mecanismo de templates interno <tutorial-templates>` e suporte para mako_, jinja2_ and cheetah_ templates."
-#: ../../index.rst:28
+#: ../../index.rst:27
msgid ""
"**Utilities:** Convenient access to form data, file uploads, cookies, "
"headers and other HTTP-related metadata."
msgstr "**Utilitários:** Conveniente acesso a dados de formulários, upload de arquivos, cookies, cabeçalhos e outros metadados relacionados ao HTTP."
-#: ../../index.rst:29
+#: ../../index.rst:28
msgid ""
"**Server:** Built-in HTTP development server and support for paste_, "
-"fapws3_, bjoern_, gae_, cherrypy_ or any other WSGI_ capable HTTP server."
-msgstr "**Servidor:** Servidor HTTP interno para desenvolvimento e suporte para paste_, fapws3_, bjoern_, gae_, cherrypy_ ou qualquer outro WSGI_ capaz de servir HTTP"
+"bjoern_, gae_, cherrypy_ or any other WSGI_ capable HTTP server."
+msgstr ""
-#: ../../index.rst:32
+#: ../../index.rst:31
msgid "Example: \"Hello World\" in a bottle"
msgstr "Exemplo: \"Olá Mundo\" em bottle"
-#: ../../index.rst:43
+#: ../../index.rst:42
msgid ""
"Run this script or paste it into a Python console, then point your browser "
"to `<http://localhost:8080/hello/world>`_. That's it."
msgstr "Execute este script ou cole em um console de Python, em seguida, acesse em seu navegador o `<http://localhost:8080/hello/world>`_. Feito!"
-#: ../../index.rst:46
+#: ../../index.rst:45
msgid "Download and Install"
msgstr "Download e Instalar"
-#: ../../index.rst:49
+#: ../../index.rst:48
msgid ""
-"Install the latest stable release with ``pip install bottle``, "
-"``easy_install -U bottle`` or download `bottle.py`__ (unstable) into your "
-"project directory. There are no hard [1]_ dependencies other than the Python"
-" standard library. Bottle runs with **Python 2.7 and 3.4+**."
-msgstr "Instale a última versão estável com ``pip install bottle``, ``easy_install -U bottle`` ou faça o download do `bottle.py`__(instável) dentro do diretório do seu projeto. Não há depedências [1]_ além das bibliotecas padrões do Python. Bottle é compatível com **Python 2.7 e 3.4+**."
+"Install the latest stable release with ``pip install bottle`` or download "
+"`bottle.py`__ (unstable) into your project directory. There are no hard [1]_"
+" dependencies other than the Python standard library. Bottle supports "
+"**Python 2.7 and Python 3**."
+msgstr ""
+
+#: ../../index.rst:50
+msgid "Support for Python 2.5 and 2.6 was dropped with this release."
+msgstr ""
-#: ../../index.rst:52
+#: ../../index.rst:55
msgid "User's Guide"
msgstr "Guia do usuário"
-#: ../../index.rst:53
+#: ../../index.rst:56
msgid ""
"Start here if you want to learn how to use the bottle framework for web "
"development. If you have any questions not answered here, feel free to ask "
"the `mailing list <mailto:bottlepy@googlegroups.com>`_."
msgstr "Comece por aqui se você quer aprender como usar o bottle framework para desenvolvimento web. Se você tiver quaisquer perguntas não respondidas aqui, sinta-se livre para pedir ajuda a `lista de discussão <mailto:bottlepy@googlegroups.com>`_."
-#: ../../index.rst:68
+#: ../../index.rst:71
msgid "Knowledge Base"
msgstr "Base de conhecimento"
-#: ../../index.rst:69
+#: ../../index.rst:72
msgid "A collection of articles, guides and HOWTOs."
msgstr "Uma coleção de artigos, guias e COMO FAZER."
-#: ../../index.rst:81
+#: ../../index.rst:84
msgid "Development and Contribution"
msgstr "Desenvolvimento e contribuição"
-#: ../../index.rst:83
+#: ../../index.rst:86
msgid ""
"These chapters are intended for developers interested in the bottle "
"development and release workflow."
msgstr "Esses capítulos são destinados a desenvolvedores interessados no desenvolvimento do bottle e entender o fluxo de contribuição."
-#: ../../index.rst:100
+#: ../../index.rst:103
msgid "License"
msgstr "Licença"
-#: ../../index.rst:102
+#: ../../index.rst:105
msgid "Code and documentation are available according to the MIT License:"
msgstr "Código e documentação estão disponíveis sobre a licença MIT:"
-#: ../../index.rst:107
+#: ../../index.rst:110
msgid ""
"The Bottle logo however is *NOT* covered by that license. It is allowed to "
"use the logo as a link to the bottle homepage or in direct context with the "
"unmodified library. In all other cases please ask first."
msgstr "O logotipo do bottle no entanto *NÃO é* abrangido pela licença (MIT). É permitido usar o logotipo como um link para a home page do bottle ou em contexto direto com a biblioteca não modificado. Nos outros casos, por favor, pergunte primeiro."
-#: ../../index.rst:112
+#: ../../index.rst:115
msgid "Footnotes"
msgstr "Notas de rodapé"
-#: ../../index.rst:113
+#: ../../index.rst:116
msgid ""
"Usage of the template or server adapter classes requires the corresponding "
"template or server modules."
diff --git a/docs/_locale/pt_BR/LC_MESSAGES/plugindev.po b/docs/_locale/pt_BR/LC_MESSAGES/plugindev.po
index f517080..e8027e4 100644
--- a/docs/_locale/pt_BR/LC_MESSAGES/plugindev.po
+++ b/docs/_locale/pt_BR/LC_MESSAGES/plugindev.po
@@ -1,5 +1,5 @@
# SOME DESCRIPTIVE TITLE.
-# Copyright (C) 2009-2017, Marcel Hellkamp
+# Copyright (C) 2009-2020, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
#
# Translators:
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: bottle\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-12-19 14:15+0100\n"
-"PO-Revision-Date: 2015-12-13 20:58+0000\n"
+"POT-Creation-Date: 2020-12-31 18:35+0100\n"
+"PO-Revision-Date: 2020-12-31 17:35+0000\n"
"Last-Translator: defnull <marc@gsites.de>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/bottle/bottle/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
@@ -234,7 +234,7 @@ msgid "rule"
msgstr ""
#: ../../plugindev.rst:111
-msgid "The rule string (e.g. ``/wiki/:page``)."
+msgid "The rule string (e.g. ``/wiki/<page>``)."
msgstr ""
#: ../../plugindev.rst:112
@@ -344,7 +344,7 @@ msgid ""
"different wrapper based on current needs, work with closures, or enable or "
"disable a plugin at runtime. Let's take the built-in HooksPlugin as an "
"example: If no hooks are installed, the plugin removes itself from all "
-"affected routes and has virtaully no overhead. As soon as you install the "
+"affected routes and has virtually no overhead. As soon as you install the "
"first hook, the plugin activates itself and takes effect again."
msgstr ""
diff --git a/docs/_locale/pt_BR/LC_MESSAGES/plugins/index.po b/docs/_locale/pt_BR/LC_MESSAGES/plugins/index.po
index 2bf27b0..cb95c89 100644
--- a/docs/_locale/pt_BR/LC_MESSAGES/plugins/index.po
+++ b/docs/_locale/pt_BR/LC_MESSAGES/plugins/index.po
@@ -1,5 +1,5 @@
# SOME DESCRIPTIVE TITLE.
-# Copyright (C) 2009-2017, Marcel Hellkamp
+# Copyright (C) 2009-2020, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
#
# Translators:
@@ -8,9 +8,9 @@ msgid ""
msgstr ""
"Project-Id-Version: bottle\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-12-19 14:15+0100\n"
-"PO-Revision-Date: 2015-12-13 21:05+0000\n"
-"Last-Translator: defnull <marc@gsites.de>\n"
+"POT-Creation-Date: 2020-12-31 18:35+0100\n"
+"PO-Revision-Date: 2020-12-31 17:35+0000\n"
+"Last-Translator: Igor P. Leroy <ip.leroy@gmail.com>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/bottle/bottle/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -36,16 +36,16 @@ msgid ""
msgstr "Dê uma olhada nos :ref:`plugins` para perguntas gerais sobre plugins (instalação, utilização). Se você pretende desenvolver um novo plugin, a página de :doc:`/plugindev` pode ajudá-lo."
#: ../../plugins/index.rst:12
-msgid "Bottle-Beaker"
-msgstr ""
+msgid "`Bottle-Beaker <http://pypi.python.org/pypi/bottle-beaker/>`_"
+msgstr "`Bottle-Beaker <http://pypi.python.org/pypi/bottle-beaker/>`_"
#: ../../plugins/index.rst:12
msgid "Beaker to session and caching library with WSGI Middleware"
msgstr "Beaker para sessões e biblioteca de cache com Middleware WSGI"
#: ../../plugins/index.rst:15
-msgid "Bottle-Cork"
-msgstr ""
+msgid "`Bottle-Cork <http://cork.firelet.net/>`_"
+msgstr "`Bottle-Cork <http://cork.firelet.net/>`_"
#: ../../plugins/index.rst:15
msgid ""
@@ -54,112 +54,188 @@ msgid ""
msgstr "Cork fornece um simples conjunto de métodos para implementar Autenticação e Autorização em aplicações web baseadas em Bottle."
#: ../../plugins/index.rst:18
-msgid "Bottle-Extras"
+msgid "`Bottle-Cors-plugin <http://pypi.org/project/bottle-cors-plugin/>`_"
msgstr ""
#: ../../plugins/index.rst:18
-msgid "Meta package to install the bottle plugin collection."
-msgstr "Meta pacotes para instalar a coleção de plugins do Bottle."
+msgid ""
+"Cors-plugin is the easiest way to implement cors on your bottle web "
+"application"
+msgstr ""
#: ../../plugins/index.rst:21
-msgid "Bottle-Flash"
-msgstr ""
+msgid "`Bottle-Extras <http://pypi.python.org/pypi/bottle-extras/>`_"
+msgstr "`Bottle-Extras <http://pypi.python.org/pypi/bottle-extras/>`_"
#: ../../plugins/index.rst:21
-msgid "flash plugin for bottle"
-msgstr "plugin flash para bottle"
+msgid "Meta package to install the bottle plugin collection."
+msgstr "Meta pacotes para instalar a coleção de plugins do Bottle."
#: ../../plugins/index.rst:24
-msgid "Bottle-Hotqueue"
-msgstr ""
+msgid "`Bottle-Flash <http://pypi.python.org/pypi/bottle-flash/>`_"
+msgstr "`Bottle-Flash <http://pypi.python.org/pypi/bottle-flash/>`_"
#: ../../plugins/index.rst:24
-msgid "FIFO Queue for Bottle built upon redis"
-msgstr "Fila FIFO para Bottle escrita sobre Redis."
+msgid "flash plugin for bottle"
+msgstr "plugin flash para bottle"
#: ../../plugins/index.rst:27
-msgid "Macaron"
-msgstr ""
+msgid "`Bottle-Hotqueue <http://pypi.python.org/pypi/bottle-hotqueue/>`_"
+msgstr "`Bottle-Hotqueue <http://pypi.python.org/pypi/bottle-hotqueue/>`_"
#: ../../plugins/index.rst:27
-msgid "Macaron is an object-relational mapper (ORM) for SQLite."
-msgstr "Macaron é um mapeamento objeto-relacional (ORM) para SQLite."
+msgid "FIFO Queue for Bottle built upon redis"
+msgstr "Fila FIFO para Bottle escrita sobre Redis."
#: ../../plugins/index.rst:30
-msgid "Bottle-Memcache"
-msgstr ""
+msgid "`Macaron <http://nobrin.github.com/macaron/webapp.html>`_"
+msgstr "`Macaron <http://nobrin.github.com/macaron/webapp.html>`_"
#: ../../plugins/index.rst:30
-msgid "Memcache integration for Bottle."
-msgstr "Integração com Memcache para Bottle."
+msgid "Macaron is an object-relational mapper (ORM) for SQLite."
+msgstr "Macaron é um mapeamento objeto-relacional (ORM) para SQLite."
#: ../../plugins/index.rst:33
-msgid "Bottle-Mongo"
-msgstr ""
+msgid "`Bottle-Memcache <http://pypi.python.org/pypi/bottle-memcache/>`_"
+msgstr "`Bottle-Memcache <http://pypi.python.org/pypi/bottle-memcache/>`_"
#: ../../plugins/index.rst:33
-msgid "MongoDB integration for Bottle"
-msgstr "Integração com MongoDB para Bottle"
+msgid "Memcache integration for Bottle."
+msgstr "Integração com Memcache para Bottle."
#: ../../plugins/index.rst:36
-msgid "Bottle-Redis"
-msgstr ""
+msgid "`Bottle-Mongo <http://pypi.python.org/pypi/bottle-mongo/>`_"
+msgstr "`Bottle-Mongo <http://pypi.python.org/pypi/bottle-mongo/>`_"
#: ../../plugins/index.rst:36
-msgid "Redis integration for Bottle."
-msgstr "Integração com Redis para Bottle."
+msgid "MongoDB integration for Bottle"
+msgstr "Integração com MongoDB para Bottle"
#: ../../plugins/index.rst:39
-msgid "Bottle-Renderer"
+msgid "`Bottle-OAuthlib <http://pypi.python.org/pypi/bottle-oauthlib/>`_"
msgstr ""
#: ../../plugins/index.rst:39
-msgid "Renderer plugin for bottle"
-msgstr "Renderer plugin para bottle"
+msgid "Adapter for oauthlib - create your own OAuth2.0 implementation"
+msgstr ""
#: ../../plugins/index.rst:42
-msgid "Bottle-Servefiles"
-msgstr ""
+msgid "`Bottle-Redis <http://pypi.python.org/pypi/bottle-redis/>`_"
+msgstr "`Bottle-Redis <http://pypi.python.org/pypi/bottle-redis/>`_"
#: ../../plugins/index.rst:42
-msgid "A reusable app that serves static files for bottle apps"
-msgstr "App reutilizável que serve arquivos estáticos para aplicações bottle"
+msgid "Redis integration for Bottle."
+msgstr "Integração com Redis para Bottle."
#: ../../plugins/index.rst:45
-msgid "Bottle-Sqlalchemy"
-msgstr ""
+msgid "`Bottle-Renderer <http://pypi.python.org/pypi/bottle-renderer/>`_"
+msgstr "`Bottle-Renderer <http://pypi.python.org/pypi/bottle-renderer/>`_"
#: ../../plugins/index.rst:45
-msgid "SQLAlchemy integration for Bottle."
-msgstr "Integração com SQLAlchemy para Bottle."
+msgid "Renderer plugin for bottle"
+msgstr "Renderer plugin para bottle"
#: ../../plugins/index.rst:48
-msgid "Bottle-Sqlite"
-msgstr ""
+msgid "`Bottle-Servefiles <http://pypi.python.org/pypi/bottle-servefiles/>`_"
+msgstr "`Bottle-Servefiles <http://pypi.python.org/pypi/bottle-servefiles/>`_"
#: ../../plugins/index.rst:48
-msgid "SQLite3 database integration for Bottle."
-msgstr "Integração com bancos de dados SQLite3 para Bottle."
+msgid "A reusable app that serves static files for bottle apps"
+msgstr "App reutilizável que serve arquivos estáticos para aplicações bottle"
#: ../../plugins/index.rst:51
-msgid "Bottle-Web2pydal"
-msgstr ""
+msgid "`Bottle-Sqlalchemy <http://pypi.python.org/pypi/bottle-sqlalchemy/>`_"
+msgstr "`Bottle-Sqlalchemy <http://pypi.python.org/pypi/bottle-sqlalchemy/>`_"
#: ../../plugins/index.rst:51
-msgid "Web2py Dal integration for Bottle."
-msgstr "Integração com Web2py Dal para Bottle."
+msgid "SQLAlchemy integration for Bottle."
+msgstr "Integração com SQLAlchemy para Bottle."
#: ../../plugins/index.rst:54
-msgid "Bottle-Werkzeug"
-msgstr ""
+msgid "`Bottle-Sqlite <http://pypi.python.org/pypi/bottle-sqlite/>`_"
+msgstr "`Bottle-Sqlite <http://pypi.python.org/pypi/bottle-sqlite/>`_"
#: ../../plugins/index.rst:54
+msgid "SQLite3 database integration for Bottle."
+msgstr "Integração com bancos de dados SQLite3 para Bottle."
+
+#: ../../plugins/index.rst:57
+msgid "`Bottle-Web2pydal <http://pypi.python.org/pypi/bottle-web2pydal/>`_"
+msgstr "`Bottle-Web2pydal <http://pypi.python.org/pypi/bottle-web2pydal/>`_"
+
+#: ../../plugins/index.rst:57
+msgid "Web2py Dal integration for Bottle."
+msgstr "Integração com Web2py Dal para Bottle."
+
+#: ../../plugins/index.rst:60
+msgid "`Bottle-Werkzeug <http://pypi.python.org/pypi/bottle-werkzeug/>`_"
+msgstr "`Bottle-Werkzeug <http://pypi.python.org/pypi/bottle-werkzeug/>`_"
+
+#: ../../plugins/index.rst:60
msgid ""
"Integrates the `werkzeug` library (alternative request and response objects,"
" advanced debugging middleware and more)."
msgstr "Integra a biblioteca `werkzeug` (request alternativo and objetos de response, middleware de debugging avançados e etc)."
-#: ../../plugins/index.rst:56
+#: ../../plugins/index.rst:63
+msgid ""
+"`bottle-smart-filters <https://github.com/agile4you/bottle-smart-filters/>`_"
+msgstr ""
+
+#: ../../plugins/index.rst:63
+msgid "Bottle Querystring smart guessing."
+msgstr ""
+
+#: ../../plugins/index.rst:66
+msgid "`bottle-jwt <https://github.com/agile4you/bottle-jwt/>`_"
+msgstr ""
+
+#: ../../plugins/index.rst:66
+msgid "JSON Web Token authentication plugin for bottle.py"
+msgstr ""
+
+#: ../../plugins/index.rst:69
+msgid "`Bottle-jwt <https://github.com/agalera/bottlejwt>`_"
+msgstr ""
+
+#: ../../plugins/index.rst:69
+msgid "JWT integration for bottle"
+msgstr ""
+
+#: ../../plugins/index.rst:72
+msgid "`canister <https://github.com/dagnelies/canister>`_"
+msgstr ""
+
+#: ../../plugins/index.rst:72
+msgid "a bottle wrapper to provide logging, sessions and authentication"
+msgstr ""
+
+#: ../../plugins/index.rst:75
+msgid "`bottle-cerberus <https://github.com/agalera/bottle-cerberus>`_"
+msgstr ""
+
+#: ../../plugins/index.rst:75
+msgid "Cerberus integration for bottle"
+msgstr ""
+
+#: ../../plugins/index.rst:78
+msgid "`Bottle-errorsrest <https://github.com/agalera/bottle-errorsrest>`_"
+msgstr ""
+
+#: ../../plugins/index.rst:78
+msgid "All errors generated from bottle are returned in json"
+msgstr ""
+
+#: ../../plugins/index.rst:82
+msgid "`Bottle-tools <https://github.com/theSage21/bottle-tools>`_"
+msgstr ""
+
+#: ../../plugins/index.rst:81
+msgid ""
+"Decorators that auto-supply function arguments using POST/query string data."
+msgstr ""
+
+#: ../../plugins/index.rst:84
msgid ""
"Plugins listed here are not part of Bottle or the Bottle project, but "
"developed and maintained by third parties."
diff --git a/docs/_locale/pt_BR/LC_MESSAGES/recipes.po b/docs/_locale/pt_BR/LC_MESSAGES/recipes.po
index f6dc330..e92d01a 100644
--- a/docs/_locale/pt_BR/LC_MESSAGES/recipes.po
+++ b/docs/_locale/pt_BR/LC_MESSAGES/recipes.po
@@ -1,5 +1,5 @@
# SOME DESCRIPTIVE TITLE.
-# Copyright (C) 2009-2017, Marcel Hellkamp
+# Copyright (C) 2009-2020, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
#
# Translators:
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: bottle\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-12-19 14:15+0100\n"
-"PO-Revision-Date: 2015-12-13 21:06+0000\n"
+"POT-Creation-Date: 2020-12-31 18:35+0100\n"
+"PO-Revision-Date: 2020-12-31 17:35+0000\n"
"Last-Translator: defnull <marc@gsites.de>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/bottle/bottle/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
@@ -38,11 +38,22 @@ msgid ""
"yourself. Here is an example for beaker sessions with a file-based backend::"
msgstr ""
-#: ../../recipes.rst:46
+#: ../../recipes.rst:45
+msgid ""
+"WARNING: Beaker's SessionMiddleware is not thread safe. If two concurrent "
+"requests modify the same session at the same time, one of the updates might "
+"get lost. For this reason, sessions should only be populated once and "
+"treated as a read-only store after that. If you find yourself updating "
+"sessions regularly, and don't want to risk losing any updates, think about "
+"using a real database instead or seek alternative session middleware "
+"libraries."
+msgstr ""
+
+#: ../../recipes.rst:49
msgid "Debugging with Style: Debugging Middleware"
msgstr ""
-#: ../../recipes.rst:48
+#: ../../recipes.rst:51
msgid ""
"Bottle catches all Exceptions raised in your app code to prevent your WSGI "
"server from crashing. If the built-in :func:`debug` mode is not enough and "
@@ -50,14 +61,14 @@ msgid ""
" this behaviour::"
msgstr ""
-#: ../../recipes.rst:56
+#: ../../recipes.rst:59
msgid ""
"Now, bottle only catches its own exceptions (:exc:`HTTPError`, "
":exc:`HTTPResponse` and :exc:`BottleException`) and your middleware can "
"handle the rest."
msgstr ""
-#: ../../recipes.rst:58
+#: ../../recipes.rst:61
msgid ""
"The werkzeug_ and paste_ libraries both ship with very powerful debugging "
"WSGI middleware. Look at :class:`werkzeug.debug.DebuggedApplication` for "
@@ -66,35 +77,41 @@ msgid ""
"code within the stack context, so **do not use them in production**."
msgstr ""
-#: ../../recipes.rst:62
+#: ../../recipes.rst:65
msgid "Unit-Testing Bottle Applications"
msgstr ""
-#: ../../recipes.rst:64
+#: ../../recipes.rst:67
msgid ""
"Unit-testing is usually performed against methods defined in your web "
"application without running a WSGI environment."
msgstr ""
-#: ../../recipes.rst:66
+#: ../../recipes.rst:69
msgid "A simple example using `Nose <http://readthedocs.org/docs/nose>`_::"
msgstr ""
-#: ../../recipes.rst:77
+#: ../../recipes.rst:80 ../../recipes.rst:97
msgid "Test script::"
msgstr ""
-#: ../../recipes.rst:84
+#: ../../recipes.rst:87
msgid ""
"In the example the Bottle route() method is never executed - only index() is"
" tested."
msgstr ""
-#: ../../recipes.rst:88
+#: ../../recipes.rst:89
+msgid ""
+"If the code being tested requires access to ``bottle.request`` you can mock "
+"it using `Boddle <https://github.com/keredson/boddle>`_::"
+msgstr ""
+
+#: ../../recipes.rst:108
msgid "Functional Testing Bottle Applications"
msgstr ""
-#: ../../recipes.rst:90
+#: ../../recipes.rst:110
msgid ""
"Any HTTP-based testing system can be used with a running WSGI server, but "
"some testing frameworks work more intimately with WSGI, and provide the "
@@ -103,64 +120,64 @@ msgid ""
"<http://www.wsgi.org/en/latest/testing.html>`_ is a good starting point."
msgstr ""
-#: ../../recipes.rst:92
+#: ../../recipes.rst:112
msgid ""
"Example using `WebTest <http://webtest.pythonpaste.org/>`_ and `Nose "
"<http://readthedocs.org/docs/nose>`_::"
msgstr ""
-#: ../../recipes.rst:112
+#: ../../recipes.rst:132
msgid "Embedding other WSGI Apps"
msgstr ""
-#: ../../recipes.rst:114
+#: ../../recipes.rst:134
msgid ""
"This is not the recommend way (you should use a middleware in front of "
"bottle to do this) but you can call other WSGI applications from within your"
" bottle app and let bottle act as a pseudo-middleware. Here is an example::"
msgstr ""
-#: ../../recipes.rst:130
+#: ../../recipes.rst:150
msgid ""
"Again, this is not the recommend way to implement subprojects. It is only "
"here because many people asked for this and to show how bottle maps to WSGI."
msgstr ""
-#: ../../recipes.rst:134
+#: ../../recipes.rst:154
msgid "Ignore trailing slashes"
msgstr ""
-#: ../../recipes.rst:136
+#: ../../recipes.rst:156
msgid ""
"For Bottle, ``/example`` and ``/example/`` are two different routes [1]_. To"
" treat both URLs the same you can add two ``@route`` decorators::"
msgstr ""
-#: ../../recipes.rst:142
+#: ../../recipes.rst:162
msgid "add a WSGI middleware that strips trailing slashes from all URLs::"
msgstr ""
-#: ../../recipes.rst:155
+#: ../../recipes.rst:175
msgid "or add a ``before_request`` hook to strip the trailing slashes::"
msgstr ""
-#: ../../recipes.rst:162
+#: ../../recipes.rst:182
msgid "Footnotes"
msgstr "Notas de rodapé"
-#: ../../recipes.rst:163
+#: ../../recipes.rst:183
msgid "Because they are. See <http://www.ietf.org/rfc/rfc3986.txt>"
msgstr ""
-#: ../../recipes.rst:167
+#: ../../recipes.rst:187
msgid "Keep-alive requests"
msgstr ""
-#: ../../recipes.rst:171
+#: ../../recipes.rst:191
msgid "For a more detailed explanation, see :doc:`async`."
msgstr ""
-#: ../../recipes.rst:173
+#: ../../recipes.rst:193
msgid ""
"Several \"push\" mechanisms like XHR multipart need the ability to write "
"response data without closing the connection in conjunction with the "
@@ -172,74 +189,74 @@ msgid ""
" paste_ server::"
msgstr ""
-#: ../../recipes.rst:190
+#: ../../recipes.rst:210
msgid ""
"If you browse to ``http://localhost:8080/stream``, you should see 'START', "
"'MIDDLE', and 'END' show up one at a time (rather than waiting 8 seconds to "
"see them all at once)."
msgstr ""
-#: ../../recipes.rst:193
+#: ../../recipes.rst:213
msgid "Gzip Compression in Bottle"
msgstr ""
-#: ../../recipes.rst:196
+#: ../../recipes.rst:216
msgid "For a detailed discussion, see compression_"
msgstr ""
-#: ../../recipes.rst:198
+#: ../../recipes.rst:218
msgid ""
"A common feature request is for Bottle to support Gzip compression, which "
"speeds up sites by compressing static resources (like CSS and JS files) "
"during a request."
msgstr ""
-#: ../../recipes.rst:200
+#: ../../recipes.rst:220
msgid ""
"Supporting Gzip compression is not a straightforward proposition, due to a "
"number of corner cases that crop up frequently. A proper Gzip implementation"
" must:"
msgstr ""
-#: ../../recipes.rst:202
+#: ../../recipes.rst:222
msgid "Compress on the fly and be fast doing so."
msgstr ""
-#: ../../recipes.rst:203
+#: ../../recipes.rst:223
msgid "Do not compress for browsers that don't support it."
msgstr ""
-#: ../../recipes.rst:204
+#: ../../recipes.rst:224
msgid "Do not compress files that are compressed already (images, videos)."
msgstr ""
-#: ../../recipes.rst:205
+#: ../../recipes.rst:225
msgid "Do not compress dynamic files."
msgstr ""
-#: ../../recipes.rst:206
+#: ../../recipes.rst:226
msgid "Support two differed compression algorithms (gzip and deflate)."
msgstr ""
-#: ../../recipes.rst:207
+#: ../../recipes.rst:227
msgid "Cache compressed files that don't change often."
msgstr ""
-#: ../../recipes.rst:208
+#: ../../recipes.rst:228
msgid "De-validate the cache if one of the files changed anyway."
msgstr ""
-#: ../../recipes.rst:209
+#: ../../recipes.rst:229
msgid "Make sure the cache does not get to big."
msgstr ""
-#: ../../recipes.rst:210
+#: ../../recipes.rst:230
msgid ""
"Do not cache small files because a disk seek would take longer than on-the-"
"fly compression."
msgstr ""
-#: ../../recipes.rst:212
+#: ../../recipes.rst:232
msgid ""
"Because of these requirements, it is the recommendation of the Bottle "
"project that Gzip compression is best handled by the WSGI server Bottle runs"
@@ -247,34 +264,34 @@ msgid ""
"that can be used to accomplish this."
msgstr ""
-#: ../../recipes.rst:216
+#: ../../recipes.rst:236
msgid "Using the hooks plugin"
msgstr ""
-#: ../../recipes.rst:218
+#: ../../recipes.rst:238
msgid ""
"For example, if you want to allow Cross-Origin Resource Sharing for the "
"content returned by all of your URL, you can use the hook decorator and "
"setup a callback function::"
msgstr ""
-#: ../../recipes.rst:236
+#: ../../recipes.rst:256
msgid ""
"You can also use the ``before_request`` to take an action before every "
"function gets called."
msgstr ""
-#: ../../recipes.rst:241
+#: ../../recipes.rst:261
msgid "Using Bottle with Heroku"
msgstr ""
-#: ../../recipes.rst:243
+#: ../../recipes.rst:263
msgid ""
"Heroku_, a popular cloud application platform now provides support for "
"running Python applications on their infastructure."
msgstr ""
-#: ../../recipes.rst:246
+#: ../../recipes.rst:266
msgid ""
"This recipe is based upon the `Heroku Quickstart "
"<http://devcenter.heroku.com/articles/quickstart>`_, with Bottle specific "
@@ -284,7 +301,7 @@ msgid ""
"<http://devcenter.heroku.com/articles/python>`_ guide::"
msgstr ""
-#: ../../recipes.rst:262
+#: ../../recipes.rst:282
msgid ""
"Heroku's app stack passes the port that the application needs to listen on "
"for requests, using the `os.environ` dictionary."
diff --git a/docs/_locale/pt_BR/LC_MESSAGES/routing.po b/docs/_locale/pt_BR/LC_MESSAGES/routing.po
index b182545..a473047 100644
--- a/docs/_locale/pt_BR/LC_MESSAGES/routing.po
+++ b/docs/_locale/pt_BR/LC_MESSAGES/routing.po
@@ -1,5 +1,5 @@
# SOME DESCRIPTIVE TITLE.
-# Copyright (C) 2009-2017, Marcel Hellkamp
+# Copyright (C) 2009-2020, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
#
# Translators:
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: bottle\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-12-19 14:15+0100\n"
-"PO-Revision-Date: 2015-01-22 19:20+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2020-12-31 18:35+0100\n"
+"PO-Revision-Date: 2020-12-31 17:35+0000\n"
+"Last-Translator: defnull <marc@gsites.de>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/bottle/bottle/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -95,15 +95,24 @@ msgstr ""
#: ../../routing.rst:29
msgid ""
+"Is it possible to escape characters like colon ``:`` with a backslash "
+"``\\``. This will prevent to trigger the old syntax in case you need to use "
+"``:``. For example: the rule ``/<action>/item:<id>`` triggers the old "
+"syntax, (see below) but ``/action/item\\:<id>`` works as intended with the "
+"new syntax."
+msgstr ""
+
+#: ../../routing.rst:33
+msgid ""
"You can change the exact behaviour in many ways using filters. This is "
"described in the next section."
msgstr ""
-#: ../../routing.rst:32
+#: ../../routing.rst:36
msgid "Wildcard Filters"
msgstr ""
-#: ../../routing.rst:36
+#: ../../routing.rst:40
msgid ""
"Filters are used to define more specific wildcards, and/or transform the "
"matched part of the URL before it is passed to the callback. A filtered "
@@ -111,31 +120,31 @@ msgid ""
"syntax for the optional config part depends on the filter used."
msgstr ""
-#: ../../routing.rst:38
+#: ../../routing.rst:42
msgid "The following standard filters are implemented:"
msgstr ""
-#: ../../routing.rst:40
+#: ../../routing.rst:44
msgid "**:int** matches (signed) digits and converts the value to integer."
msgstr ""
-#: ../../routing.rst:41
+#: ../../routing.rst:45
msgid "**:float** similar to :int but for decimal numbers."
msgstr ""
-#: ../../routing.rst:42
+#: ../../routing.rst:46
msgid ""
"**:path** matches all characters including the slash character in a non-"
"greedy way and may be used to match more than one path segment."
msgstr ""
-#: ../../routing.rst:43
+#: ../../routing.rst:47
msgid ""
"**:re[:exp]** allows you to specify a custom regular expression in the "
"config field. The matched value is not modified."
msgstr ""
-#: ../../routing.rst:45
+#: ../../routing.rst:49
msgid ""
"You can add your own filters to the router. All you need is a function that "
"returns three elements: A regular expression string, a callable to convert "
@@ -144,81 +153,81 @@ msgid ""
"parameter and may parse it as needed::"
msgstr ""
-#: ../../routing.rst:71
+#: ../../routing.rst:75
msgid "Legacy Syntax"
msgstr ""
-#: ../../routing.rst:75
+#: ../../routing.rst:79
msgid ""
"The new rule syntax was introduce in **Bottle 0.10** to simplify some common"
" use cases, but the old syntax still works and you can find lot code "
"examples still using it. The differences are best described by example:"
msgstr ""
-#: ../../routing.rst:78
+#: ../../routing.rst:82
msgid "Old Syntax"
msgstr ""
-#: ../../routing.rst:78
+#: ../../routing.rst:82
msgid "New Syntax"
msgstr ""
-#: ../../routing.rst:80
+#: ../../routing.rst:84
msgid "``:name``"
msgstr ""
-#: ../../routing.rst:80
+#: ../../routing.rst:84
msgid "``<name>``"
msgstr ""
-#: ../../routing.rst:81
+#: ../../routing.rst:85
msgid "``:name#regexp#``"
msgstr ""
-#: ../../routing.rst:81
+#: ../../routing.rst:85
msgid "``<name:re:regexp>``"
msgstr ""
-#: ../../routing.rst:82
+#: ../../routing.rst:86
msgid "``:#regexp#``"
msgstr ""
-#: ../../routing.rst:82
+#: ../../routing.rst:86
msgid "``<:re:regexp>``"
msgstr ""
-#: ../../routing.rst:83
+#: ../../routing.rst:87
msgid "``:##``"
msgstr ""
-#: ../../routing.rst:83
+#: ../../routing.rst:87
msgid "``<:re>``"
msgstr ""
-#: ../../routing.rst:86
+#: ../../routing.rst:90
msgid ""
"Try to avoid the old syntax in future projects if you can. It is not "
"currently deprecated, but will be eventually."
msgstr ""
-#: ../../routing.rst:91
+#: ../../routing.rst:95
msgid "Explicit routing configuration"
msgstr ""
-#: ../../routing.rst:93
+#: ../../routing.rst:97
msgid ""
"Route decorator can also be directly called as method. This way provides "
"flexibility in complex setups, allowing you to directly control, when and "
"how routing configuration done."
msgstr ""
-#: ../../routing.rst:95
+#: ../../routing.rst:99
msgid ""
"Here is a basic example of explicit routing configuration for default bottle"
" application::"
msgstr ""
-#: ../../routing.rst:101
+#: ../../routing.rst:105
msgid ""
"In fact, any :class:`Bottle` instance routing can be configured same way::"
msgstr ""
diff --git a/docs/_locale/pt_BR/LC_MESSAGES/stpl.po b/docs/_locale/pt_BR/LC_MESSAGES/stpl.po
index 5471eeb..d1c782f 100644
--- a/docs/_locale/pt_BR/LC_MESSAGES/stpl.po
+++ b/docs/_locale/pt_BR/LC_MESSAGES/stpl.po
@@ -1,5 +1,5 @@
# SOME DESCRIPTIVE TITLE.
-# Copyright (C) 2009-2017, Marcel Hellkamp
+# Copyright (C) 2009-2020, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
#
# Translators:
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: bottle\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-12-19 14:15+0100\n"
-"PO-Revision-Date: 2015-12-13 20:58+0000\n"
+"POT-Creation-Date: 2020-12-31 18:35+0100\n"
+"PO-Revision-Date: 2020-12-31 17:35+0000\n"
"Last-Translator: defnull <marc@gsites.de>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/bottle/bottle/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
@@ -142,47 +142,55 @@ msgstr ""
#: ../../stpl.rst:96
msgid ""
-"If you find yourself to escape a lot, consider using :ref:`custom tokens "
-"<stpl-custom-tokens>`."
+"If you find yourself needing to escape a lot, consider using :ref:`custom "
+"tokens <stpl-custom-tokens>`."
msgstr ""
-#: ../../stpl.rst:99
+#: ../../stpl.rst:98
+msgid ""
+"Note that ``%`` and ``<% %>`` work in *exactly* the same way. The latter is "
+"only a convenient way to type less and avoid clutter for longer code "
+"segments. This means that in ``<% %>`` blocks, all indented code must be "
+"terminated with an ``end``, as in the following example::"
+msgstr ""
+
+#: ../../stpl.rst:114
msgid "Whitespace Control"
msgstr ""
-#: ../../stpl.rst:101
+#: ../../stpl.rst:116
msgid ""
"Code blocks and code lines always span the whole line. Whitespace in front "
"of after a code segment is stripped away. You won't see empty lines or "
"dangling whitespace in your template because of embedded code::"
msgstr ""
-#: ../../stpl.rst:109
+#: ../../stpl.rst:124
msgid "This snippet renders to clean and compact html::"
msgstr ""
-#: ../../stpl.rst:115
+#: ../../stpl.rst:130
msgid ""
"But embedding code still requires you to start a new line, which may not "
"what you want to see in your rendered template. To skip the newline in front"
" of a code segment, end the text line with a double-backslash::"
msgstr ""
-#: ../../stpl.rst:123
+#: ../../stpl.rst:138
msgid "This time the rendered template looks like this::"
msgstr ""
-#: ../../stpl.rst:127
+#: ../../stpl.rst:142
msgid ""
"This only works directly in front of code segments. In all other places you "
"can control the whitespace yourself and don't need any special syntax."
msgstr ""
-#: ../../stpl.rst:130
+#: ../../stpl.rst:145
msgid "Template Functions"
msgstr ""
-#: ../../stpl.rst:132
+#: ../../stpl.rst:147
msgid ""
"Each template is preloaded with a bunch of functions that help with the most"
" common use cases. These functions are always available. You don't have to "
@@ -191,20 +199,20 @@ msgid ""
"anything you want within your templates. They are python programs after all."
msgstr ""
-#: ../../stpl.rst:136
+#: ../../stpl.rst:151
msgid ""
"Prior to this release, :func:`include` and :func:`rebase` were syntax "
"keywords, not functions."
msgstr ""
-#: ../../stpl.rst:141
+#: ../../stpl.rst:156
msgid ""
"Render a sub-template with the specified variables and insert the resulting "
"text into the current template. The function returns a dictionary containing"
" the local variables passed to or defined within the sub-template::"
msgstr ""
-#: ../../stpl.rst:149
+#: ../../stpl.rst:164
msgid ""
"Mark the current template to be later included into a different template. "
"After the current template is rendered, its resulting text is stored in a "
@@ -213,11 +221,11 @@ msgid ""
"simulate the inheritance feature found in other template engines::"
msgstr ""
-#: ../../stpl.rst:154
+#: ../../stpl.rst:169
msgid "This can be combined with the following ``base.tpl``::"
msgstr ""
-#: ../../stpl.rst:166
+#: ../../stpl.rst:181
msgid ""
"Accessing undefined variables in a template raises :exc:`NameError` and "
"stops rendering immediately. This is standard python behavior and nothing "
@@ -226,32 +234,38 @@ msgid ""
"or use the same template in different situations. These functions may help:"
msgstr ""
-#: ../../stpl.rst:174
+#: ../../stpl.rst:189
msgid ""
"Return True if the variable is defined in the current template namespace, "
"False otherwise."
msgstr ""
-#: ../../stpl.rst:179
+#: ../../stpl.rst:194
msgid "Return the variable, or a default value."
msgstr ""
-#: ../../stpl.rst:183
+#: ../../stpl.rst:198
msgid ""
"If the variable is not defined, create it with the given default value. "
"Return the variable."
msgstr ""
-#: ../../stpl.rst:186
+#: ../../stpl.rst:201
msgid ""
"Here is an example that uses all three functions to implement optional "
"template variables in different ways::"
msgstr ""
-#: ../../stpl.rst:200
+#: ../../stpl.rst:215
msgid ":class:`SimpleTemplate` API"
msgstr ""
+#: ../../../bottle.pydocstring of bottle.SimpleTemplate.prepare:1
+msgid ""
+"Run preparations (parsing, caching, ...). It should be possible to call this"
+" again to refresh a template or to update settings."
+msgstr ""
+
#: ../../../bottle.pydocstring of bottle.SimpleTemplate.render:1
msgid "Render the template using keyword arguments as local variables."
msgstr ""
diff --git a/docs/_locale/pt_BR/LC_MESSAGES/tutorial.po b/docs/_locale/pt_BR/LC_MESSAGES/tutorial.po
index b1e2e1b..75ff730 100644
--- a/docs/_locale/pt_BR/LC_MESSAGES/tutorial.po
+++ b/docs/_locale/pt_BR/LC_MESSAGES/tutorial.po
@@ -1,5 +1,5 @@
# SOME DESCRIPTIVE TITLE.
-# Copyright (C) 2009-2017, Marcel Hellkamp
+# Copyright (C) 2009-2020, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
#
# Translators:
@@ -9,9 +9,9 @@ msgid ""
msgstr ""
"Project-Id-Version: bottle\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-12-19 14:15+0100\n"
-"PO-Revision-Date: 2015-12-14 18:13+0000\n"
-"Last-Translator: alephmelo <alephmelo@icloud.com>\n"
+"POT-Creation-Date: 2020-12-31 18:35+0100\n"
+"PO-Revision-Date: 2020-12-31 17:35+0000\n"
+"Last-Translator: defnull <marc@gsites.de>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/bottle/bottle/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -62,7 +62,7 @@ msgid ""
"applications. If you do not have permissions to install packages system-wide"
" or simply don't want to, create a `virtualenv "
"<http://pypi.python.org/pypi/virtualenv>`_ first:"
-msgstr "De qualquer maneira, você irá precisar do Python 2.7 ou mais recente (incluindo 3.4+) para executar aplicações bottle. Se você não tem permissões para instalar pacotes globalmente no sistema ou simplesmente não deseja fazer, crie uma `virtualenv <http://pypi.python.org/pypi/virtualenv>`_ primeiro:"
+msgstr ""
#: ../../tutorial.rst:55
msgid "Or, if virtualenv is not installed on your system:"
@@ -382,7 +382,7 @@ msgid ""
msgstr ""
#: ../../tutorial.rst:273
-msgid "Empty Strings, False, None or other non-true values:"
+msgid "Empty Strings, ``False``, ``None`` or other non-true values:"
msgstr ""
#: ../../tutorial.rst:273
@@ -415,7 +415,7 @@ msgid ""
msgstr ""
#: ../../tutorial.rst:282
-msgid "Instances of HTTPError or HTTPResponse"
+msgid "Instances of :exc:`HTTPError` or :exc:`HTTPResponse`"
msgstr ""
#: ../../tutorial.rst:282
@@ -545,7 +545,7 @@ msgstr ""
#: ../../tutorial.rst:365
msgid ""
"Both functions will interrupt your callback code by raising an "
-":exc:`HTTPError` exception."
+":exc:`HTTPResponse` exception."
msgstr ""
#: ../../tutorial.rst:368
@@ -614,7 +614,7 @@ msgid ""
"read :ref:`ahead <tutorial-cookies>`."
msgstr ""
-#: ../../tutorial.rst:403 ../../tutorial.rst:532
+#: ../../tutorial.rst:403 ../../tutorial.rst:533
msgid "Cookies"
msgstr ""
@@ -661,25 +661,32 @@ msgid ""
" off, requires Python 2.7 or newer)."
msgstr ""
-#: ../../tutorial.rst:424
+#: ../../tutorial.rst:423
+msgid ""
+"**same_site:** Disables third-party use for a cookie. Allowed attributes: "
+"`lax` and `strict`. In strict mode the cookie will never be sent. In lax "
+"mode the cookie is only sent with a top-level GET request."
+msgstr ""
+
+#: ../../tutorial.rst:425
msgid ""
"If neither `expires` nor `max_age` is set, the cookie expires at the end of "
"the browser session or as soon as the browser window is closed. There are "
"some other gotchas you should consider when using cookies:"
msgstr ""
-#: ../../tutorial.rst:426
+#: ../../tutorial.rst:427
msgid "Cookies are limited to 4 KB of text in most browsers."
msgstr ""
-#: ../../tutorial.rst:427
+#: ../../tutorial.rst:428
msgid ""
"Some users configure their browsers to not accept cookies at all. Most "
"search engines ignore cookies too. Make sure that your application still "
"works without cookies."
msgstr ""
-#: ../../tutorial.rst:428
+#: ../../tutorial.rst:429
msgid ""
"Cookies are stored at client side and are not encrypted in any way. Whatever"
" you store in a cookie, the user can read it. Worse than that, an attacker "
@@ -689,15 +696,15 @@ msgid ""
"cookies, too. Thus, never store confidential information in cookies."
msgstr ""
-#: ../../tutorial.rst:429
+#: ../../tutorial.rst:430
msgid "Cookies are easily forged by malicious clients. Do not trust cookies."
msgstr ""
-#: ../../tutorial.rst:434
+#: ../../tutorial.rst:435
msgid "Signed Cookies"
msgstr ""
-#: ../../tutorial.rst:435
+#: ../../tutorial.rst:436
msgid ""
"As mentioned above, cookies are easily forged by malicious clients. Bottle "
"can cryptographically sign your cookies to prevent this kind of "
@@ -707,7 +714,7 @@ msgid ""
"if the cookie is not signed or the signature keys don't match::"
msgstr ""
-#: ../../tutorial.rst:455
+#: ../../tutorial.rst:456
msgid ""
"In addition, Bottle automatically pickles and unpickles any data stored to "
"signed cookies. This allows you to store any pickle-able object (not only "
@@ -715,7 +722,7 @@ msgid ""
"limit."
msgstr ""
-#: ../../tutorial.rst:457
+#: ../../tutorial.rst:458
msgid ""
"Signed cookies are not encrypted (the client can still see the content) and "
"not copy-protected (the client can restore an old cookie). The main "
@@ -723,11 +730,11 @@ msgid ""
"not to store secret information at client side."
msgstr ""
-#: ../../tutorial.rst:470
+#: ../../tutorial.rst:471
msgid "Request Data"
msgstr ""
-#: ../../tutorial.rst:472
+#: ../../tutorial.rst:473
msgid ""
"Cookies, HTTP header, HTML ``<form>`` fields and other request data is "
"available through the global :data:`request` object. This special object "
@@ -735,25 +742,25 @@ msgid ""
"where multiple client connections are handled at the same time::"
msgstr ""
-#: ../../tutorial.rst:481
+#: ../../tutorial.rst:482
msgid ""
"The :data:`request` object is a subclass of :class:`BaseRequest` and has a "
"very rich API to access data. We only cover the most commonly used features "
"here, but it should be enough to get started."
msgstr ""
-#: ../../tutorial.rst:486
+#: ../../tutorial.rst:487
msgid "Introducing :class:`FormsDict`"
msgstr ""
-#: ../../tutorial.rst:488
+#: ../../tutorial.rst:489
msgid ""
"Bottle uses a special type of dictionary to store form data and cookies. "
":class:`FormsDict` behaves like a normal dictionary, but has some additional"
" features to make your life easier."
msgstr ""
-#: ../../tutorial.rst:490
+#: ../../tutorial.rst:491
msgid ""
"**Attribute access**: All values in the dictionary are also accessible as "
"attributes. These virtual attributes return unicode strings, even if the "
@@ -761,7 +768,7 @@ msgid ""
"empty, but still present::"
msgstr ""
-#: ../../tutorial.rst:505
+#: ../../tutorial.rst:506
msgid ""
"**Multiple values per key:** :class:`FormsDict` is a subclass of "
":class:`MultiDict` and can store more than one value per key. The standard "
@@ -770,7 +777,7 @@ msgid ""
"values for a specific key::"
msgstr ""
-#: ../../tutorial.rst:510
+#: ../../tutorial.rst:511
msgid ""
"**WTForms support:** Some libraries (e.g. `WTForms "
"<http://wtforms.simplecodes.com/>`_) want all-unicode dictionaries as input."
@@ -779,7 +786,7 @@ msgid ""
"the other features."
msgstr ""
-#: ../../tutorial.rst:514
+#: ../../tutorial.rst:515
msgid ""
"In **Python 2** all keys and values are byte-strings. If you need unicode, "
"you can call :meth:`FormsDict.getunicode` or fetch values via attribute "
@@ -787,7 +794,7 @@ msgid ""
"empty string if that fails. No need to catch :exc:`UnicodeError`::"
msgstr ""
-#: ../../tutorial.rst:521
+#: ../../tutorial.rst:522
msgid ""
"In **Python 3** all strings are unicode, but HTTP is a byte-based wire "
"protocol. The server has to decode the byte strings somehow before they are "
@@ -799,13 +806,13 @@ msgid ""
" not what you want."
msgstr ""
-#: ../../tutorial.rst:528
+#: ../../tutorial.rst:529
msgid ""
"If you need the whole dictionary with correctly decoded values (e.g. for "
"WTForms), you can call :meth:`FormsDict.decode` to get a re-encoded copy."
msgstr ""
-#: ../../tutorial.rst:534
+#: ../../tutorial.rst:535
msgid ""
"Cookies are small pieces of text stored in the clients browser and sent back"
" to the server with each request. They are useful to keep some state around "
@@ -813,25 +820,25 @@ msgid ""
" for security related stuff. They can be easily forged by the client."
msgstr ""
-#: ../../tutorial.rst:536
+#: ../../tutorial.rst:537
msgid ""
"All cookies sent by the client are available through "
":attr:`BaseRequest.cookies` (a :class:`FormsDict`). This example shows a "
"simple cookie-based view counter::"
msgstr ""
-#: ../../tutorial.rst:546
+#: ../../tutorial.rst:547
msgid ""
"The :meth:`BaseRequest.get_cookie` method is a different way do access "
"cookies. It supports decoding :ref:`signed cookies <tutorial-signed-"
"cookies>` as described in a separate section."
msgstr ""
-#: ../../tutorial.rst:549
+#: ../../tutorial.rst:550
msgid "HTTP Headers"
msgstr ""
-#: ../../tutorial.rst:551
+#: ../../tutorial.rst:552
msgid ""
"All HTTP headers sent by the client (e.g. ``Referer``, ``Agent`` or "
"``Accept-Language``) are stored in a :class:`WSGIHeaderDict` and accessible "
@@ -839,11 +846,11 @@ msgid ""
" is basically a dictionary with case-insensitive keys::"
msgstr ""
-#: ../../tutorial.rst:563
+#: ../../tutorial.rst:564
msgid "Query Variables"
msgstr ""
-#: ../../tutorial.rst:565
+#: ../../tutorial.rst:566
msgid ""
"The query string (as in ``/forum?id=1&page=5``) is commonly used to transmit"
" a small number of key/value pairs to the server. You can use the "
@@ -852,17 +859,17 @@ msgid ""
"string."
msgstr ""
-#: ../../tutorial.rst:578
+#: ../../tutorial.rst:579
msgid "HTML `<form>` Handling"
msgstr ""
-#: ../../tutorial.rst:580
+#: ../../tutorial.rst:581
msgid ""
"Let us start from the beginning. In HTML, a typical ``<form>`` looks "
"something like this:"
msgstr ""
-#: ../../tutorial.rst:590
+#: ../../tutorial.rst:591
msgid ""
"The ``action`` attribute specifies the URL that will receive the form data. "
"``method`` defines the HTTP method to use (``GET`` or ``POST``). With "
@@ -872,77 +879,77 @@ msgid ""
"in doubt, use ``POST`` forms."
msgstr ""
-#: ../../tutorial.rst:592
+#: ../../tutorial.rst:593
msgid ""
"Form fields transmitted via ``POST`` are stored in :attr:`BaseRequest.forms`"
" as a :class:`FormsDict`. The server side code may look like this::"
msgstr ""
-#: ../../tutorial.rst:615
+#: ../../tutorial.rst:616
msgid ""
"There are several other attributes used to access form data. Some of them "
"combine values from different sources for easier access. The following table"
" should give you a decent overview."
msgstr ""
-#: ../../tutorial.rst:618
+#: ../../tutorial.rst:619
msgid "Attribute"
msgstr ""
-#: ../../tutorial.rst:618
+#: ../../tutorial.rst:619
msgid "GET Form fields"
msgstr ""
-#: ../../tutorial.rst:618
+#: ../../tutorial.rst:619
msgid "POST Form fields"
msgstr ""
-#: ../../tutorial.rst:618
+#: ../../tutorial.rst:619
msgid "File Uploads"
msgstr ""
-#: ../../tutorial.rst:620
+#: ../../tutorial.rst:621
msgid ":attr:`BaseRequest.query`"
msgstr ""
-#: ../../tutorial.rst:620 ../../tutorial.rst:621 ../../tutorial.rst:622
-#: ../../tutorial.rst:623 ../../tutorial.rst:623 ../../tutorial.rst:624
-#: ../../tutorial.rst:625 ../../tutorial.rst:625
+#: ../../tutorial.rst:621 ../../tutorial.rst:622 ../../tutorial.rst:623
+#: ../../tutorial.rst:624 ../../tutorial.rst:624 ../../tutorial.rst:625
+#: ../../tutorial.rst:626 ../../tutorial.rst:626
msgid "yes"
msgstr ""
-#: ../../tutorial.rst:620 ../../tutorial.rst:620 ../../tutorial.rst:621
-#: ../../tutorial.rst:621 ../../tutorial.rst:622 ../../tutorial.rst:622
-#: ../../tutorial.rst:623 ../../tutorial.rst:624 ../../tutorial.rst:624
-#: ../../tutorial.rst:625
+#: ../../tutorial.rst:621 ../../tutorial.rst:621 ../../tutorial.rst:622
+#: ../../tutorial.rst:622 ../../tutorial.rst:623 ../../tutorial.rst:623
+#: ../../tutorial.rst:624 ../../tutorial.rst:625 ../../tutorial.rst:625
+#: ../../tutorial.rst:626
msgid "no"
msgstr ""
-#: ../../tutorial.rst:621
+#: ../../tutorial.rst:622
msgid ":attr:`BaseRequest.forms`"
msgstr ""
-#: ../../tutorial.rst:622
+#: ../../tutorial.rst:623
msgid ":attr:`BaseRequest.files`"
msgstr ""
-#: ../../tutorial.rst:623
+#: ../../tutorial.rst:624
msgid ":attr:`BaseRequest.params`"
msgstr ""
-#: ../../tutorial.rst:624
+#: ../../tutorial.rst:625
msgid ":attr:`BaseRequest.GET`"
msgstr ""
-#: ../../tutorial.rst:625
+#: ../../tutorial.rst:626
msgid ":attr:`BaseRequest.POST`"
msgstr ""
-#: ../../tutorial.rst:630
+#: ../../tutorial.rst:631
msgid "File uploads"
msgstr ""
-#: ../../tutorial.rst:632
+#: ../../tutorial.rst:633
msgid ""
"To support file uploads, we have to change the ``<form>`` tag a bit. First, "
"we tell the browser to encode the form data in a different way by adding an "
@@ -951,14 +958,14 @@ msgid ""
"Here is an example:"
msgstr ""
-#: ../../tutorial.rst:642
+#: ../../tutorial.rst:643
msgid ""
"Bottle stores file uploads in :attr:`BaseRequest.files` as "
":class:`FileUpload` instances, along with some metadata about the upload. "
"Let us assume you just want to save the file to disk::"
msgstr ""
-#: ../../tutorial.rst:656
+#: ../../tutorial.rst:657
msgid ""
":attr:`FileUpload.filename` contains the name of the file on the clients "
"file system, but is cleaned up and normalized to prevent bugs caused by "
@@ -967,7 +974,7 @@ msgid ""
":attr:`FileUpload.raw_filename`."
msgstr ""
-#: ../../tutorial.rst:658
+#: ../../tutorial.rst:659
msgid ""
"The :attr:`FileUpload.save` method is highly recommended if you want to "
"store the file to disk. It prevents some common errors (e.g. it does not "
@@ -976,22 +983,22 @@ msgid ""
":attr:`FileUpload.file`. Just be careful."
msgstr ""
-#: ../../tutorial.rst:662
+#: ../../tutorial.rst:663
msgid "JSON Content"
msgstr ""
-#: ../../tutorial.rst:664
+#: ../../tutorial.rst:665
msgid ""
"Some JavaScript or REST clients send ``application/json`` content to the "
"server. The :attr:`BaseRequest.json` attribute contains the parsed data "
"structure, if available."
msgstr ""
-#: ../../tutorial.rst:668
+#: ../../tutorial.rst:669
msgid "The raw request body"
msgstr ""
-#: ../../tutorial.rst:670
+#: ../../tutorial.rst:671
msgid ""
"You can access the raw body data as a file-like object via "
":attr:`BaseRequest.body`. This is a :class:`BytesIO` buffer or a temporary "
@@ -1001,24 +1008,24 @@ msgid ""
"unbuffered access to the stream, have a look at ``request['wsgi.input']``."
msgstr ""
-#: ../../tutorial.rst:675
+#: ../../tutorial.rst:676
msgid "WSGI Environment"
msgstr ""
-#: ../../tutorial.rst:677
+#: ../../tutorial.rst:678
msgid ""
"Each :class:`BaseRequest` instance wraps a WSGI environment dictionary. The "
"original is stored in :attr:`BaseRequest.environ`, but the request object "
"itself behaves like a dictionary, too. Most of the interesting data is "
"exposed through special methods or attributes, but if you want to access "
-"`WSGI environ variables <WSGI specification>`_ directly, you can do so::"
+"`WSGI environ variables <WSGI_Specification>`_ directly, you can do so::"
msgstr ""
-#: ../../tutorial.rst:695
+#: ../../tutorial.rst:696
msgid "Templates"
msgstr ""
-#: ../../tutorial.rst:697
+#: ../../tutorial.rst:698
msgid ""
"Bottle comes with a fast and powerful built-in template engine called "
":doc:`stpl`. To render a template you can use the :func:`template` function "
@@ -1027,7 +1034,7 @@ msgid ""
"arguments. Here’s a simple example of how to render a template::"
msgstr ""
-#: ../../tutorial.rst:704
+#: ../../tutorial.rst:705
msgid ""
"This will load the template file ``hello_template.tpl`` and render it with "
"the ``name`` variable set. Bottle will look for templates in the "
@@ -1035,17 +1042,17 @@ msgid ""
"list."
msgstr ""
-#: ../../tutorial.rst:706
+#: ../../tutorial.rst:707
msgid ""
"The :func:`view` decorator allows you to return a dictionary with the "
"template variables instead of calling :func:`template`::"
msgstr ""
-#: ../../tutorial.rst:715
+#: ../../tutorial.rst:716
msgid "Syntax"
msgstr ""
-#: ../../tutorial.rst:718
+#: ../../tutorial.rst:719
msgid ""
"The template syntax is a very thin layer around the Python language. Its "
"main purpose is to ensure correct indentation of blocks, so you can format "
@@ -1053,26 +1060,26 @@ msgid ""
" syntax description: :doc:`stpl`"
msgstr ""
-#: ../../tutorial.rst:720
+#: ../../tutorial.rst:721
msgid "Here is an example template::"
msgstr ""
-#: ../../tutorial.rst:731
+#: ../../tutorial.rst:732
msgid "Caching"
msgstr ""
-#: ../../tutorial.rst:732
+#: ../../tutorial.rst:733
msgid ""
"Templates are cached in memory after compilation. Modifications made to the "
"template files will have no affect until you clear the template cache. Call "
"``bottle.TEMPLATES.clear()`` to do so. Caching is disabled in debug mode."
msgstr ""
-#: ../../tutorial.rst:742
+#: ../../tutorial.rst:743
msgid "Plugins"
msgstr ""
-#: ../../tutorial.rst:746
+#: ../../tutorial.rst:747
msgid ""
"Bottle's core features cover most common use-cases, but as a micro-framework"
" it has its limits. This is where \"Plugins\" come into play. Plugins add "
@@ -1080,7 +1087,7 @@ msgid ""
"just automate some repetitive work."
msgstr ""
-#: ../../tutorial.rst:748
+#: ../../tutorial.rst:749
msgid ""
"We have a growing :doc:`/plugins/index` and most plugins are designed to be "
"portable and re-usable across applications. The chances are high that your "
@@ -1088,7 +1095,7 @@ msgid ""
"the :doc:`/plugindev` may help you."
msgstr ""
-#: ../../tutorial.rst:750
+#: ../../tutorial.rst:751
msgid ""
"The effects and APIs of plugins are manifold and depend on the specific "
"plugin. The ``SQLitePlugin`` plugin for example detects callbacks that "
@@ -1097,7 +1104,7 @@ msgid ""
"use a database::"
msgstr ""
-#: ../../tutorial.rst:770
+#: ../../tutorial.rst:771
msgid ""
"Other plugin may populate the thread-safe :data:`local` object, change "
"details of the :data:`request` object, filter the data returned by the "
@@ -1106,11 +1113,11 @@ msgid ""
"the original callback. What happens exactly depends on the plugin."
msgstr ""
-#: ../../tutorial.rst:774
+#: ../../tutorial.rst:775
msgid "Application-wide Installation"
msgstr ""
-#: ../../tutorial.rst:776
+#: ../../tutorial.rst:777
msgid ""
"Plugins can be installed application-wide or just to some specific routes "
"that need additional functionality. Most plugins can safely be installed to "
@@ -1118,7 +1125,7 @@ msgid ""
" need their functionality."
msgstr ""
-#: ../../tutorial.rst:778
+#: ../../tutorial.rst:779
msgid ""
"Let us take the ``SQLitePlugin`` plugin for example. It only affects route "
"callbacks that need a database connection. Other routes are left alone. "
@@ -1126,13 +1133,13 @@ msgid ""
"additional overhead."
msgstr ""
-#: ../../tutorial.rst:780
+#: ../../tutorial.rst:781
msgid ""
"To install a plugin, just call :func:`install` with the plugin as first "
"argument::"
msgstr ""
-#: ../../tutorial.rst:785
+#: ../../tutorial.rst:786
msgid ""
"The plugin is not applied to the route callbacks yet. This is delayed to "
"make sure no routes are missed. You can install plugins first and add routes"
@@ -1141,17 +1148,17 @@ msgid ""
"database plugin first."
msgstr ""
-#: ../../tutorial.rst:789
+#: ../../tutorial.rst:790
msgid "Uninstall Plugins"
msgstr ""
-#: ../../tutorial.rst:790
+#: ../../tutorial.rst:791
msgid ""
"You can use a name, class or instance to :func:`uninstall` a previously "
"installed plugin::"
msgstr ""
-#: ../../tutorial.rst:800
+#: ../../tutorial.rst:801
msgid ""
"Plugins can be installed and removed at any time, even at runtime while "
"serving requests. This enables some neat tricks (installing slow debugging "
@@ -1160,52 +1167,52 @@ msgid ""
" re-applied."
msgstr ""
-#: ../../tutorial.rst:803
+#: ../../tutorial.rst:804
msgid ""
"The module-level :func:`install` and :func:`uninstall` functions affect the "
":ref:`default-app`. To manage plugins for a specific application, use the "
"corresponding methods on the :class:`Bottle` application object."
msgstr ""
-#: ../../tutorial.rst:807
+#: ../../tutorial.rst:808
msgid "Route-specific Installation"
msgstr ""
-#: ../../tutorial.rst:809
+#: ../../tutorial.rst:810
msgid ""
"The ``apply`` parameter of the :func:`route` decorator comes in handy if you"
" want to install plugins to only a small number of routes::"
msgstr ""
-#: ../../tutorial.rst:819
+#: ../../tutorial.rst:820
msgid "Blacklisting Plugins"
msgstr ""
-#: ../../tutorial.rst:821
+#: ../../tutorial.rst:822
msgid ""
"You may want to explicitly disable a plugin for a number of routes. The "
":func:`route` decorator has a ``skip`` parameter for this purpose::"
msgstr ""
-#: ../../tutorial.rst:843
+#: ../../tutorial.rst:844
msgid ""
"The ``skip`` parameter accepts a single value or a list of values. You can "
"use a name, class or instance to identify the plugin that is to be skipped. "
"Set ``skip=True`` to skip all plugins at once."
msgstr ""
-#: ../../tutorial.rst:846
+#: ../../tutorial.rst:847
msgid "Plugins and Sub-Applications"
msgstr ""
-#: ../../tutorial.rst:848
+#: ../../tutorial.rst:849
msgid ""
"Most plugins are specific to the application they were installed to. "
"Consequently, they should not affect sub-applications mounted with "
":meth:`Bottle.mount`. Here is an example::"
msgstr ""
-#: ../../tutorial.rst:859
+#: ../../tutorial.rst:860
msgid ""
"Whenever you mount an application, Bottle creates a proxy-route on the main-"
"application that forwards all requests to the sub-application. Plugins are "
@@ -1214,13 +1221,13 @@ msgid ""
"affect the routes of the ``/blog`` sub-application."
msgstr ""
-#: ../../tutorial.rst:861
+#: ../../tutorial.rst:862
msgid ""
"This behavior is intended as a sane default, but can be overridden. The "
"following example re-activates all plugins for a specific proxy-route::"
msgstr ""
-#: ../../tutorial.rst:865
+#: ../../tutorial.rst:866
msgid ""
"But there is a snag: The plugin sees the whole sub-application as a single "
"route, namely the proxy-route mentioned above. In order to affect each "
@@ -1228,21 +1235,21 @@ msgid ""
"the mounted application explicitly."
msgstr ""
-#: ../../tutorial.rst:870
+#: ../../tutorial.rst:871
msgid "Development"
msgstr ""
-#: ../../tutorial.rst:872
+#: ../../tutorial.rst:873
msgid ""
"So you have learned the basics and want to write your own application? Here "
-"are some tips that might help you beeing more productive."
+"are some tips that might help you being more productive."
msgstr ""
-#: ../../tutorial.rst:878
+#: ../../tutorial.rst:879
msgid "Default Application"
msgstr ""
-#: ../../tutorial.rst:880
+#: ../../tutorial.rst:881
msgid ""
"Bottle maintains a global stack of :class:`Bottle` instances and uses the "
"top of the stack as a default for some of the module-level functions and "
@@ -1250,7 +1257,7 @@ msgid ""
"calling :meth:`Bottle.route` on the default application::"
msgstr ""
-#: ../../tutorial.rst:888
+#: ../../tutorial.rst:889
msgid ""
"This is very convenient for small applications and saves you some typing, "
"but also means that, as soon as your module is imported, routes are "
@@ -1259,28 +1266,28 @@ msgid ""
"applications::"
msgstr ""
-#: ../../tutorial.rst:898
+#: ../../tutorial.rst:899
msgid ""
"Separating the application object improves re-usability a lot, too. Other "
"developers can safely import the ``app`` object from your module and use "
":meth:`Bottle.mount` to merge applications together."
msgstr ""
-#: ../../tutorial.rst:903
+#: ../../tutorial.rst:904
msgid ""
"Starting with bottle-0.13 you can use :class:`Bottle` instances as context "
"managers::"
msgstr ""
-#: ../../tutorial.rst:928
+#: ../../tutorial.rst:929
msgid "Debug Mode"
msgstr ""
-#: ../../tutorial.rst:930
+#: ../../tutorial.rst:931
msgid "During early development, the debug mode can be very helpful."
msgstr ""
-#: ../../tutorial.rst:938
+#: ../../tutorial.rst:939
msgid ""
"In this mode, Bottle is much more verbose and provides helpful debugging "
"information whenever an error occurs. It also disables some optimisations "
@@ -1288,31 +1295,31 @@ msgid ""
" misconfiguration."
msgstr ""
-#: ../../tutorial.rst:940
+#: ../../tutorial.rst:941
msgid "Here is an incomplete list of things that change in debug mode:"
msgstr ""
-#: ../../tutorial.rst:942
+#: ../../tutorial.rst:943
msgid "The default error page shows a traceback."
msgstr ""
-#: ../../tutorial.rst:943
+#: ../../tutorial.rst:944
msgid "Templates are not cached."
msgstr ""
-#: ../../tutorial.rst:944
+#: ../../tutorial.rst:945
msgid "Plugins are applied immediately."
msgstr ""
-#: ../../tutorial.rst:946
+#: ../../tutorial.rst:947
msgid "Just make sure not to use the debug mode on a production server."
msgstr ""
-#: ../../tutorial.rst:949
+#: ../../tutorial.rst:950
msgid "Auto Reloading"
msgstr ""
-#: ../../tutorial.rst:951
+#: ../../tutorial.rst:952
msgid ""
"During development, you have to restart the server a lot to test your recent"
" changes. The auto reloader can do this for you. Every time you edit a "
@@ -1320,14 +1327,14 @@ msgid ""
"version of your code."
msgstr ""
-#: ../../tutorial.rst:961
+#: ../../tutorial.rst:962
msgid ""
"How it works: the main process will not start a server, but spawn a new "
"child process using the same command line arguments used to start the main "
"process. All module-level code is executed at least twice! Be careful."
msgstr ""
-#: ../../tutorial.rst:966
+#: ../../tutorial.rst:967
msgid ""
"The child process will have ``os.environ['BOTTLE_CHILD']`` set to ``True`` "
"and start as a normal non-reloading app server. As soon as any of the loaded"
@@ -1336,7 +1343,7 @@ msgid ""
"debug mode to deactivate template caching."
msgstr ""
-#: ../../tutorial.rst:972
+#: ../../tutorial.rst:973
msgid ""
"The reloading depends on the ability to stop the child process. If you are "
"running on Windows or any other operating system not supporting "
@@ -1345,21 +1352,21 @@ msgid ""
"finally clauses, etc., are not executed after a ``SIGTERM``."
msgstr ""
-#: ../../tutorial.rst:980
+#: ../../tutorial.rst:981
msgid "Command Line Interface"
msgstr ""
-#: ../../tutorial.rst:984
+#: ../../tutorial.rst:985
msgid "Starting with version 0.10 you can use bottle as a command-line tool:"
msgstr ""
-#: ../../tutorial.rst:1008
+#: ../../tutorial.rst:1009
msgid ""
"The `ADDRESS` field takes an IP address or an IP:PORT pair and defaults to "
"``localhost:8080``. The other parameters should be self-explanatory."
msgstr ""
-#: ../../tutorial.rst:1010
+#: ../../tutorial.rst:1011
msgid ""
"Both plugins and applications are specified via import expressions. These "
"consist of an import path (e.g. ``package.module``) and an expression to be "
@@ -1367,52 +1374,52 @@ msgid ""
":func:`load` for details. Here are some examples:"
msgstr ""
-#: ../../tutorial.rst:1031
+#: ../../tutorial.rst:1032
msgid "Deployment"
msgstr ""
-#: ../../tutorial.rst:1033
+#: ../../tutorial.rst:1034
msgid ""
"Bottle runs on the built-in `wsgiref WSGIServer "
"<http://docs.python.org/library/wsgiref.html#module-wsgiref.simple_server>`_"
" by default. This non-threading HTTP server is perfectly fine for "
-"development and early production, but may become a performance bottleneck "
-"when server load increases."
+"development, but may become a performance bottleneck when server load "
+"increases."
msgstr ""
-#: ../../tutorial.rst:1035
+#: ../../tutorial.rst:1036
msgid ""
"The easiest way to increase performance is to install a multi-threaded "
"server library like paste_ or cherrypy_ and tell Bottle to use that instead "
"of the single-threaded server::"
msgstr ""
-#: ../../tutorial.rst:1039
+#: ../../tutorial.rst:1040
msgid ""
"This, and many other deployment options are described in a separate article:"
" :doc:`deployment`"
msgstr ""
-#: ../../tutorial.rst:1047
+#: ../../tutorial.rst:1048
msgid "Glossary"
msgstr ""
-#: ../../tutorial.rst:1050
+#: ../../tutorial.rst:1051
msgid "callback"
msgstr ""
-#: ../../tutorial.rst:1052
+#: ../../tutorial.rst:1053
msgid ""
"Programmer code that is to be called when some external action happens. In "
"the context of web frameworks, the mapping between URL paths and application"
" code is often achieved by specifying a callback function for each URL."
msgstr ""
-#: ../../tutorial.rst:1056
+#: ../../tutorial.rst:1057
msgid "decorator"
msgstr ""
-#: ../../tutorial.rst:1058
+#: ../../tutorial.rst:1059
msgid ""
"A function returning another function, usually applied as a function "
"transformation using the ``@decorator`` syntax. See `python documentation "
@@ -1421,11 +1428,11 @@ msgid ""
"about decorators."
msgstr ""
-#: ../../tutorial.rst:1059
+#: ../../tutorial.rst:1060
msgid "environ"
msgstr ""
-#: ../../tutorial.rst:1061
+#: ../../tutorial.rst:1062
msgid ""
"A structure where information about all documents under the root is saved, "
"and used for cross-referencing. The environment is pickled after the "
@@ -1433,22 +1440,22 @@ msgid ""
"changed documents."
msgstr ""
-#: ../../tutorial.rst:1065
+#: ../../tutorial.rst:1066
msgid "handler function"
msgstr ""
-#: ../../tutorial.rst:1067
+#: ../../tutorial.rst:1068
msgid ""
"A function to handle some specific event or situation. In a web framework, "
"the application is developed by attaching a handler function as callback for"
" each specific URL comprising the application."
msgstr ""
-#: ../../tutorial.rst:1070
+#: ../../tutorial.rst:1071
msgid "source directory"
msgstr ""
-#: ../../tutorial.rst:1072
+#: ../../tutorial.rst:1073
msgid ""
"The directory which, including its subdirectories, contains all source files"
" for one Sphinx project."
diff --git a/docs/_locale/pt_BR/LC_MESSAGES/tutorial_app.po b/docs/_locale/pt_BR/LC_MESSAGES/tutorial_app.po
index 2f88e7d..a2a8701 100644
--- a/docs/_locale/pt_BR/LC_MESSAGES/tutorial_app.po
+++ b/docs/_locale/pt_BR/LC_MESSAGES/tutorial_app.po
@@ -1,5 +1,5 @@
# SOME DESCRIPTIVE TITLE.
-# Copyright (C) 2009-2017, Marcel Hellkamp
+# Copyright (C) 2009-2020, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
#
# Translators:
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: bottle\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-12-19 14:15+0100\n"
-"PO-Revision-Date: 2015-12-13 20:58+0000\n"
+"POT-Creation-Date: 2020-12-31 18:35+0100\n"
+"PO-Revision-Date: 2020-12-31 17:35+0000\n"
"Last-Translator: defnull <marc@gsites.de>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/bottle/bottle/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
@@ -17,17 +17,17 @@ msgstr ""
"Language: pt_BR\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: ../../tutorial_app.rst:20
+#: ../../tutorial_app.rst:19
msgid "Tutorial: Todo-List Application"
msgstr ""
-#: ../../tutorial_app.rst:24
+#: ../../tutorial_app.rst:23
msgid ""
-"This tutorial is a work in progess and written by `noisefloor "
+"This tutorial is a work in progress and written by `noisefloor "
"<http://github.com/noisefloor>`_."
msgstr ""
-#: ../../tutorial_app.rst:27
+#: ../../tutorial_app.rst:26
msgid ""
"This tutorial should give a brief introduction to the Bottle_ WSGI "
"Framework. The main goal is to be able, after reading through this tutorial,"
@@ -37,19 +37,19 @@ msgid ""
"POST parameters."
msgstr ""
-#: ../../tutorial_app.rst:29
+#: ../../tutorial_app.rst:28
msgid ""
"To understand the content here, it is not necessary to have a basic "
"knowledge of WSGI, as Bottle tries to keep WSGI away from the user anyway. "
"You should have a fair understanding of the Python_ programming language. "
"Furthermore, the example used in the tutorial retrieves and stores data in a"
-" SQL databse, so a basic idea about SQL helps, but is not a must to "
+" SQL database, so a basic idea about SQL helps, but is not a must to "
"understand the concepts of Bottle. Right here, SQLite_ is used. The output "
"of Bottle sent to the browser is formatted in some examples by the help of "
"HTML. Thus, a basic idea about the common HTML tags does help as well."
msgstr ""
-#: ../../tutorial_app.rst:31
+#: ../../tutorial_app.rst:30
msgid ""
"For the sake of introducing Bottle, the Python code \"in between\" is kept "
"short, in order to keep the focus. Also all code within the tutorial is "
@@ -58,15 +58,15 @@ msgid ""
"protect the database with a password, test and escape the input etc."
msgstr ""
-#: ../../tutorial_app.rst:0
+#: ../../tutorial_app.rst:32
msgid "Table of Contents"
msgstr ""
-#: ../../tutorial_app.rst:36
+#: ../../tutorial_app.rst:35
msgid "Goals"
msgstr ""
-#: ../../tutorial_app.rst:38
+#: ../../tutorial_app.rst:37
msgid ""
"At the end of this tutorial, we will have a simple, web-based ToDo list. The"
" list contains a text (with max 100 characters) and a status (0 for closed, "
@@ -74,68 +74,68 @@ msgid ""
"can be view and edited and new items can be added."
msgstr ""
-#: ../../tutorial_app.rst:40
+#: ../../tutorial_app.rst:39
msgid ""
"During development, all pages will be available on ``localhost`` only, but "
"later on it will be shown how to adapt the application for a \"real\" "
"server, including how to use with Apache's mod_wsgi."
msgstr ""
-#: ../../tutorial_app.rst:42
+#: ../../tutorial_app.rst:41
msgid ""
"Bottle will do the routing and format the output, with the help of "
"templates. The items of the list will be stored inside a SQLite database. "
"Reading and writing the database will be done by Python code."
msgstr ""
-#: ../../tutorial_app.rst:44
+#: ../../tutorial_app.rst:43
msgid ""
"We will end up with an application with the following pages and "
"functionality:"
msgstr ""
-#: ../../tutorial_app.rst:46
+#: ../../tutorial_app.rst:45
msgid "start page ``http://localhost:8080/todo``"
msgstr ""
-#: ../../tutorial_app.rst:47
+#: ../../tutorial_app.rst:46
msgid "adding new items to the list: ``http://localhost:8080/new``"
msgstr ""
-#: ../../tutorial_app.rst:48
+#: ../../tutorial_app.rst:47
msgid "page for editing items: ``http://localhost:8080/edit/<no:int>``"
msgstr ""
-#: ../../tutorial_app.rst:49
+#: ../../tutorial_app.rst:48
msgid "catching errors"
msgstr ""
-#: ../../tutorial_app.rst:52
+#: ../../tutorial_app.rst:51
msgid "Before We Start..."
msgstr ""
-#: ../../tutorial_app.rst:56
+#: ../../tutorial_app.rst:55
msgid "Install Bottle"
msgstr ""
-#: ../../tutorial_app.rst:57
+#: ../../tutorial_app.rst:56
msgid ""
"Assuming that you have a fairly new installation of Python (version 2.5 or "
"higher), you only need to install Bottle in addition to that. Bottle has no "
"other dependencies than Python itself."
msgstr ""
-#: ../../tutorial_app.rst:59
+#: ../../tutorial_app.rst:58
msgid ""
"You can either manually install Bottle or use Python's easy_install: "
"``easy_install bottle``"
msgstr ""
-#: ../../tutorial_app.rst:63
+#: ../../tutorial_app.rst:62
msgid "Further Software Necessities"
msgstr ""
-#: ../../tutorial_app.rst:64
+#: ../../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 "
@@ -143,18 +143,18 @@ msgid ""
"of the python standard library."
msgstr ""
-#: ../../tutorial_app.rst:67
+#: ../../tutorial_app.rst:66
msgid "Create An SQL Database"
msgstr ""
-#: ../../tutorial_app.rst:68
+#: ../../tutorial_app.rst:67
msgid ""
"First, we need to create the database we use later on. To do so, save the "
"following script in your project directory and run it with python. You can "
"use the interactive interpreter too::"
msgstr ""
-#: ../../tutorial_app.rst:79
+#: ../../tutorial_app.rst:78
msgid ""
"This generates a database-file `todo.db` with tables called ``todo`` and "
"three columns ``id``, ``task``, and ``status``. ``id`` is a unique id for "
@@ -164,22 +164,22 @@ msgid ""
"closed (value 0)."
msgstr ""
-#: ../../tutorial_app.rst:82
+#: ../../tutorial_app.rst:81
msgid "Using Bottle for a Web-Based ToDo List"
msgstr ""
-#: ../../tutorial_app.rst:84
+#: ../../tutorial_app.rst:83
msgid ""
"Now it is time to introduce Bottle in order to create a web-based "
"application. But first, we need to look into a basic concept of Bottle: "
"routes."
msgstr ""
-#: ../../tutorial_app.rst:88
+#: ../../tutorial_app.rst:87
msgid "Understanding routes"
msgstr ""
-#: ../../tutorial_app.rst:89
+#: ../../tutorial_app.rst:88
msgid ""
"Basically, each page visible in the browser is dynamically generated when "
"the page address is called. Thus, there is no static content. That is "
@@ -190,24 +190,24 @@ msgid ""
"execute the corresponding Python code and return its result."
msgstr ""
-#: ../../tutorial_app.rst:93
+#: ../../tutorial_app.rst:92
msgid "First Step - Showing All Open Items"
msgstr ""
-#: ../../tutorial_app.rst:94
+#: ../../tutorial_app.rst:93
msgid ""
"So, after understanding the concept of routes, let's create the first one. "
"The goal is to see all open items from the ToDo list::"
msgstr ""
-#: ../../tutorial_app.rst:109
+#: ../../tutorial_app.rst:108
msgid ""
"Save the code a ``todo.py``, preferably in the same directory as the file "
"``todo.db``. Otherwise, you need to add the path to ``todo.db`` in the "
"``sqlite3.connect()`` statement."
msgstr ""
-#: ../../tutorial_app.rst:111
+#: ../../tutorial_app.rst:110
msgid ""
"Let's have a look what we just did: We imported the necessary module "
"``sqlite3`` to access to SQLite database and from Bottle we imported "
@@ -223,19 +223,19 @@ msgid ""
"``todo_list()``. That is how routing within bottle works."
msgstr ""
-#: ../../tutorial_app.rst:113
+#: ../../tutorial_app.rst:112
msgid ""
"Actually you can bind more than one route to a function. So the following "
"code::"
msgstr ""
-#: ../../tutorial_app.rst:120
+#: ../../tutorial_app.rst:119
msgid ""
"will work fine, too. What will not work is to bind one route to more than "
"one function."
msgstr ""
-#: ../../tutorial_app.rst:122
+#: ../../tutorial_app.rst:121
msgid ""
"What you will see in the browser is what is returned, thus the value given "
"by the ``return`` statement. In this example, we need to convert ``result`` "
@@ -244,7 +244,7 @@ msgid ""
"list of tuples, which is the standard defined by the `Python DB API`_."
msgstr ""
-#: ../../tutorial_app.rst:124
+#: ../../tutorial_app.rst:123
msgid ""
"Now, after understanding the little script above, it is time to execute it "
"and watch the result yourself. Remember that on Linux- / Unix-based systems "
@@ -254,7 +254,7 @@ msgid ""
"this::"
msgstr ""
-#: ../../tutorial_app.rst:128
+#: ../../tutorial_app.rst:127
msgid ""
"If so - congratulations! You are now a successful user of Bottle. In case it"
" did not work and you need to make some changes to the script, remember to "
@@ -262,23 +262,23 @@ msgid ""
"loaded."
msgstr ""
-#: ../../tutorial_app.rst:130
+#: ../../tutorial_app.rst:129
msgid ""
"Actually, the output is not really exciting nor nice to read. It is the raw "
"result returned from the SQL query."
msgstr ""
-#: ../../tutorial_app.rst:132
+#: ../../tutorial_app.rst:131
msgid ""
"So, in the next step we format the output in a nicer way. But before we do "
"that, we make our life easier."
msgstr ""
-#: ../../tutorial_app.rst:136
+#: ../../tutorial_app.rst:135
msgid "Debugging and Auto-Reload"
msgstr ""
-#: ../../tutorial_app.rst:137
+#: ../../tutorial_app.rst:136
msgid ""
"Maybe you already noticed that Bottle sends a short error message to the "
"browser in case something within the script is wrong, e.g. the connection to"
@@ -287,7 +287,7 @@ msgid ""
"statement to the script::"
msgstr ""
-#: ../../tutorial_app.rst:145
+#: ../../tutorial_app.rst:144
msgid ""
"By enabling \"debug\", you will get a full stacktrace of the Python "
"interpreter, which usually contains useful information for finding bugs. "
@@ -295,42 +295,42 @@ msgid ""
" will take effect without stopping the server."
msgstr ""
-#: ../../tutorial_app.rst:149
+#: ../../tutorial_app.rst:148
msgid ""
"That ``debug(True)`` is supposed to be used for development only, it should "
"*not* be used in production environments."
msgstr ""
-#: ../../tutorial_app.rst:153
+#: ../../tutorial_app.rst:152
msgid ""
"Another quite nice feature is auto-reloading, which is enabled by modifying "
"the ``run()`` statement to"
msgstr ""
-#: ../../tutorial_app.rst:159
+#: ../../tutorial_app.rst:158
msgid ""
"This will automatically detect changes to the script and reload the new "
"version once it is called again, without the need to stop and start the "
"server."
msgstr ""
-#: ../../tutorial_app.rst:161
+#: ../../tutorial_app.rst:160
msgid ""
"Again, the feature is mainly supposed to be used while developing, not on "
"production systems."
msgstr ""
-#: ../../tutorial_app.rst:165
+#: ../../tutorial_app.rst:164
msgid "Bottle Template To Format The Output"
msgstr ""
-#: ../../tutorial_app.rst:166
+#: ../../tutorial_app.rst:165
msgid ""
"Now let's have a look at casting the output of the script into a proper "
"format."
msgstr ""
-#: ../../tutorial_app.rst:168
+#: ../../tutorial_app.rst:167
msgid ""
"Actually Bottle expects to receive a string or a list of strings from a "
"function and returns them by the help of the built-in server to the browser."
@@ -338,7 +338,7 @@ msgid ""
" text formatted with HTML markup, too."
msgstr ""
-#: ../../tutorial_app.rst:170
+#: ../../tutorial_app.rst:169
msgid ""
"Bottle brings its own easy-to-use template engine with it. Templates are "
"stored as separate files having a ``.tpl`` extension. The template can be "
@@ -348,7 +348,7 @@ msgid ""
" query, which will be then formatted nicely within the template."
msgstr ""
-#: ../../tutorial_app.rst:172
+#: ../../tutorial_app.rst:171
msgid ""
"Right here, we are going to cast the result of our query showing the open "
"ToDo items into a simple table with two columns: the first column will "
@@ -356,11 +356,11 @@ msgid ""
"as seen above, a list of tuples, each tuple contains one set of results."
msgstr ""
-#: ../../tutorial_app.rst:174
+#: ../../tutorial_app.rst:173
msgid "To include the template in our example, just add the following lines::"
msgstr ""
-#: ../../tutorial_app.rst:184
+#: ../../tutorial_app.rst:183
msgid ""
"So we do here two things: first, we import ``template`` from Bottle in order"
" to be able to use templates. Second, we assign the output of the template "
@@ -371,7 +371,7 @@ msgid ""
"value to a template."
msgstr ""
-#: ../../tutorial_app.rst:186
+#: ../../tutorial_app.rst:185
msgid ""
"Templates always return a list of strings, thus there is no need to convert "
"anything. We can save one line of code by writing ``return "
@@ -379,18 +379,18 @@ msgid ""
"as above."
msgstr ""
-#: ../../tutorial_app.rst:188
+#: ../../tutorial_app.rst:187
msgid ""
"Now it is time to write the corresponding template, which looks like this::"
msgstr ""
-#: ../../tutorial_app.rst:202
+#: ../../tutorial_app.rst:201
msgid ""
"Save the code as ``make_table.tpl`` in the same directory where ``todo.py`` "
"is stored."
msgstr ""
-#: ../../tutorial_app.rst:204
+#: ../../tutorial_app.rst:203
msgid ""
"Let's have a look at the code: every line starting with % is interpreted as "
"Python code. Because it is effectively Python, only valid Python statements "
@@ -398,7 +398,7 @@ msgid ""
"code would. The other lines are plain HTML markup."
msgstr ""
-#: ../../tutorial_app.rst:206
+#: ../../tutorial_app.rst:205
msgid ""
"As you can see, we use Python's ``for`` statement two times, in order to go "
"through ``rows``. As seen above, ``rows`` is a variable which holds the "
@@ -409,14 +409,14 @@ msgid ""
" ``%end``, otherwise the output may not be what you expect."
msgstr ""
-#: ../../tutorial_app.rst:208
+#: ../../tutorial_app.rst:207
msgid ""
"If you need to access a variable within a non-Python code line inside the "
"template, you need to put it into double curly braces. This tells the "
"template to insert the actual value of the variable right in place."
msgstr ""
-#: ../../tutorial_app.rst:210
+#: ../../tutorial_app.rst:209
msgid ""
"Run the script again and look at the output. Still not really nice, but at "
"least more readable than the list of tuples. You can spice-up the very "
@@ -424,107 +424,97 @@ msgid ""
"looking output."
msgstr ""
-#: ../../tutorial_app.rst:214
+#: ../../tutorial_app.rst:213
msgid "Using GET and POST Values"
msgstr ""
-#: ../../tutorial_app.rst:215
+#: ../../tutorial_app.rst:214
msgid ""
"As we can review all open items properly, we move to the next step, which is"
" adding new items to the ToDo list. The new item should be received from a "
"regular HTML-based form, which sends its data by the GET method."
msgstr ""
-#: ../../tutorial_app.rst:217
+#: ../../tutorial_app.rst:216
msgid ""
"To do so, we first add a new route to our script and tell the route that it "
"should get GET data::"
msgstr ""
-#: ../../tutorial_app.rst:240
+#: ../../tutorial_app.rst:239
msgid ""
"To access GET (or POST) data, we need to import ``request`` from Bottle. To "
"assign the actual data to a variable, we use the statement "
-"``request.GET.get('task','').strip()`` statement, where ``task`` is the name"
-" of the GET data we want to access. That's all. If your GET data has more "
-"than one variable, multiple ``request.GET.get()`` statements can be used and"
-" assigned to other variables."
+"``request.GET.task.strip()`` statement, where ``task`` is the name of the "
+"GET data we want to access. That's all. If your GET data has more than one "
+"variable, multiple ``request.GET.get()`` statements can be used and assigned"
+" to other variables."
msgstr ""
-#: ../../tutorial_app.rst:242
+#: ../../tutorial_app.rst:241
msgid ""
"The rest of this piece of code is just processing of the gained data: "
"writing to the database, retrieve the corresponding id from the database and"
" generate the output."
msgstr ""
-#: ../../tutorial_app.rst:244
+#: ../../tutorial_app.rst:243
msgid ""
"But where do we get the GET data from? Well, we can use a static HTML page "
"holding the form. Or, what we do right now, is to use a template which is "
"output when the route ``/new`` is called without GET data."
msgstr ""
-#: ../../tutorial_app.rst:246
+#: ../../tutorial_app.rst:245
msgid "The code needs to be extended to::"
msgstr ""
-#: ../../tutorial_app.rst:269
+#: ../../tutorial_app.rst:268
msgid "``new_task.tpl`` looks like this::"
msgstr ""
-#: ../../tutorial_app.rst:277
+#: ../../tutorial_app.rst:276
msgid "That's all. As you can see, the template is plain HTML this time."
msgstr ""
-#: ../../tutorial_app.rst:279
+#: ../../tutorial_app.rst:278
msgid "Now we are able to extend our to do list."
msgstr ""
-#: ../../tutorial_app.rst:281
+#: ../../tutorial_app.rst:280
msgid ""
"By the way, if you prefer to use POST data: this works exactly the same way,"
" just use ``request.POST.get()`` instead."
msgstr ""
-#: ../../tutorial_app.rst:285
+#: ../../tutorial_app.rst:284
msgid "Editing Existing Items"
msgstr ""
-#: ../../tutorial_app.rst:286
+#: ../../tutorial_app.rst:285
msgid "The last point to do is to enable editing of existing items."
msgstr ""
-#: ../../tutorial_app.rst:288
+#: ../../tutorial_app.rst:287
msgid ""
"By using only the routes we know so far it is possible, but may be quite "
"tricky. But Bottle knows something called \"dynamic routes\", which makes "
"this task quite easy."
msgstr ""
-#: ../../tutorial_app.rst:290
+#: ../../tutorial_app.rst:289
msgid "The basic statement for a dynamic route looks like this::"
msgstr ""
-#: ../../tutorial_app.rst:294
+#: ../../tutorial_app.rst:293
msgid ""
-"The key point here is the colon. This tells Bottle to accept for "
-"``:something`` any string up to the next slash. Furthermore, the value of "
-"``something`` will be passed to the function assigned to that route, so the "
-"data can be processed within the function."
-msgstr ""
-
-#: ../../tutorial_app.rst:296
-msgid ""
-"For our ToDo list, we will create a route ``@route('/edit/<no:int>)``, where"
-" ``no`` is the id (integer) of the item to edit."
-msgstr ""
-
-#: ../../tutorial_app.rst:298
-msgid "The code looks like this::"
+"This tells Bottle to accept for ``<something>`` any string up to the next "
+"slash. Furthermore, the value of ``something`` will be passed to the "
+"function assigned to that route, so the data can be processed within the "
+"function, like this::"
msgstr ""
-#: ../../tutorial_app.rst:326
+#: ../../tutorial_app.rst:321
msgid ""
"It is basically pretty much the same what we already did above when adding "
"new items, like using ``GET`` data etc. The main addition here is using the "
@@ -533,34 +523,60 @@ msgid ""
" the function to access the right row of data within the database."
msgstr ""
-#: ../../tutorial_app.rst:328
+#: ../../tutorial_app.rst:324
msgid ""
"The template ``edit_task.tpl`` called within the function looks like this::"
msgstr ""
-#: ../../tutorial_app.rst:343
+#: ../../tutorial_app.rst:339
msgid ""
"Again, this template is a mix of Python statements and HTML, as already "
"explained above."
msgstr ""
-#: ../../tutorial_app.rst:345
+#: ../../tutorial_app.rst:341
msgid ""
"A last word on dynamic routes: you can even use a regular expression for a "
"dynamic route, as demonstrated later."
msgstr ""
+#: ../../tutorial_app.rst:345
+msgid "Validating Dynamic Routes"
+msgstr ""
+
+#: ../../tutorial_app.rst:346
+msgid ""
+"Using dynamic routes is fine, but for many cases it makes sense to validate "
+"the dynamic part of the route. For example, we expect an integer number in "
+"our route for editing above. But if a float, characters or so are received, "
+"the Python interpreter throws an exception, which is not what we want."
+msgstr ""
+
#: ../../tutorial_app.rst:348
+msgid ""
+"For those cases, Bottle offers the ``<name:int>`` wildcard filter, which "
+"matches (signed) digits and converts the value to integer. In order to apply"
+" the wildcard filter, extend the code as follows::"
+msgstr ""
+
+#: ../../tutorial_app.rst:356
+msgid ""
+"Save the code and call the page again using incorrect value for "
+"``<no:int>``, e.g. a float. You will receive not an exception, but a \"404 "
+"Not Found\" error."
+msgstr ""
+
+#: ../../tutorial_app.rst:360
msgid "Dynamic Routes Using Regular Expressions"
msgstr ""
-#: ../../tutorial_app.rst:349
+#: ../../tutorial_app.rst:361
msgid ""
"Bottle can also handle dynamic routes, where the \"dynamic part\" of the "
"route can be a regular expression."
msgstr ""
-#: ../../tutorial_app.rst:351
+#: ../../tutorial_app.rst:363
msgid ""
"So, just to demonstrate that, let's assume that all single items in our ToDo"
" list should be accessible by their plain number, by a term like e.g. "
@@ -569,31 +585,28 @@ msgid ""
"the route, the term \"item\" is static."
msgstr ""
-#: ../../tutorial_app.rst:353
+#: ../../tutorial_app.rst:365
msgid "As said above, the solution is a regular expression::"
msgstr ""
-#: ../../tutorial_app.rst:367
+#: ../../tutorial_app.rst:380
msgid ""
-"This example is somehow artificially constructed - it would be easier to use"
-" a plain dynamic route only combined with a validation. Nevertheless, we "
-"want to see how regular expression routes work: the line "
-"``@route(/item<item_:re:[0-9]+>)`` starts like a normal route, but the part "
-"surrounded by # is interpreted as a regular expression, which is the dynamic"
-" part of the route. So in this case, we want to match any digit between 0 "
-"and 9. The following function \"show_item\" just checks whether the given "
-"item is present in the database or not. In case it is present, the "
-"corresponding text of the task is returned. As you can see, only the regular"
-" expression part of the route is passed forward. Furthermore, it is always "
-"forwarded as a string, even if it is a plain integer number, like in this "
-"case."
+"The line ``@route(/item<item:re:[0-9]+>)`` starts like a normal route, but "
+"the third part of the wildcard is interpreted as a regular expression, which"
+" is the dynamic part of the route. So in this case, we want to match any "
+"digit between 0 and 9. The following function \"show_item\" just checks "
+"whether the given item is present in the database or not. In case it is "
+"present, the corresponding text of the task is returned. As you can see, "
+"only the regular expression part of the route is passed forward. "
+"Furthermore, it is always forwarded as a string, even if it is a plain "
+"integer number, like in this case."
msgstr ""
-#: ../../tutorial_app.rst:371
+#: ../../tutorial_app.rst:384
msgid "Returning Static Files"
msgstr ""
-#: ../../tutorial_app.rst:372
+#: ../../tutorial_app.rst:385
msgid ""
"Sometimes it may become necessary to associate a route not to a Python "
"function, but just return a static file. So if you have for example a help "
@@ -601,7 +614,7 @@ msgid ""
"This works as follows::"
msgstr ""
-#: ../../tutorial_app.rst:380
+#: ../../tutorial_app.rst:393
msgid ""
"At first, we need to import the ``static_file`` function from Bottle. As you"
" can see, the ``return static_file`` statement replaces the ``return`` "
@@ -614,11 +627,11 @@ msgid ""
"``static_file`` works with any type of route, including the dynamic ones."
msgstr ""
-#: ../../tutorial_app.rst:384
+#: ../../tutorial_app.rst:397
msgid "Returning JSON Data"
msgstr ""
-#: ../../tutorial_app.rst:385
+#: ../../tutorial_app.rst:398
msgid ""
"There may be cases where you do not want your application to generate the "
"output directly, but return data to be processed further on, e.g. by "
@@ -628,37 +641,37 @@ msgid ""
"languages, including Python"
msgstr ""
-#: ../../tutorial_app.rst:387
+#: ../../tutorial_app.rst:400
msgid ""
"So, let's assume we want to return the data generated in the regular "
"expression route example as a JSON object. The code looks like this::"
msgstr ""
-#: ../../tutorial_app.rst:402
+#: ../../tutorial_app.rst:415
msgid ""
"As you can, that is fairly simple: just return a regular Python dictionary "
"and Bottle will convert it automatically into a JSON object prior to "
"sending. So if you e.g. call \"http://localhost/json1\" Bottle should in "
-"this case return the JSON object ``{\"Task\": [\"Read A-byte-of-python to "
+"this case return the JSON object ``{\"task\": [\"Read A-byte-of-python to "
"get a good introduction into Python\"]}``."
msgstr ""
-#: ../../tutorial_app.rst:407
+#: ../../tutorial_app.rst:420
msgid "Catching Errors"
msgstr ""
-#: ../../tutorial_app.rst:408
+#: ../../tutorial_app.rst:421
msgid ""
"The next step may is to catch the error with Bottle itself, to keep away any"
" type of error message from the user of your application. To do that, Bottle"
" has an \"error-route\", which can be a assigned to a HTML-error."
msgstr ""
-#: ../../tutorial_app.rst:410
+#: ../../tutorial_app.rst:423
msgid "In our case, we want to catch a 403 error. The code is as follows::"
msgstr ""
-#: ../../tutorial_app.rst:418
+#: ../../tutorial_app.rst:431
msgid ""
"So, at first we need to import ``error`` from Bottle and define a route by "
"``error(403)``, which catches all \"403 forbidden\" errors. The function "
@@ -667,28 +680,28 @@ msgid ""
"function always needs to accept one argument, otherwise it will not work."
msgstr ""
-#: ../../tutorial_app.rst:420
+#: ../../tutorial_app.rst:433
msgid ""
"Again, you can assign more than one error-route to a function, or catch "
"various errors with one function each. So this code::"
msgstr ""
-#: ../../tutorial_app.rst:427
+#: ../../tutorial_app.rst:440
msgid "works fine, the following one as well::"
msgstr ""
-#: ../../tutorial_app.rst:439
+#: ../../tutorial_app.rst:452
msgid "Summary"
msgstr ""
-#: ../../tutorial_app.rst:440
+#: ../../tutorial_app.rst:453
msgid ""
"After going through all the sections above, you should have a brief "
"understanding how the Bottle WSGI framework works. Furthermore you have all "
"the knowledge necessary to use Bottle for your applications."
msgstr ""
-#: ../../tutorial_app.rst:442
+#: ../../tutorial_app.rst:455
msgid ""
"The following chapter give a short introduction how to adapt Bottle for "
"larger projects. Furthermore, we will show how to operate Bottle with web "
@@ -696,11 +709,11 @@ msgid ""
"one we used so far."
msgstr ""
-#: ../../tutorial_app.rst:445
+#: ../../tutorial_app.rst:458
msgid "Server Setup"
msgstr ""
-#: ../../tutorial_app.rst:447
+#: ../../tutorial_app.rst:460
msgid ""
"So far, we used the standard server used by Bottle, which is the `WSGI "
"reference Server`_ shipped along with Python. Although this server is "
@@ -709,47 +722,47 @@ msgid ""
"have a look how to tweak the settings of the standard server first."
msgstr ""
-#: ../../tutorial_app.rst:451
+#: ../../tutorial_app.rst:464
msgid "Running Bottle on a different port and IP"
msgstr ""
-#: ../../tutorial_app.rst:452
+#: ../../tutorial_app.rst:465
msgid ""
-"As standard, Bottle serves the pages on the IP adress 127.0.0.1, also known "
-"as ``localhost``, and on port ``8080``. To modify the setting is pretty "
+"As standard, Bottle serves the pages on the IP address 127.0.0.1, also known"
+" as ``localhost``, and on port ``8080``. To modify the setting is pretty "
"simple, as additional parameters can be passed to Bottle's ``run()`` "
"function to change the port and the address."
msgstr ""
-#: ../../tutorial_app.rst:454
+#: ../../tutorial_app.rst:467
msgid ""
"To change the port, just add ``port=portnumber`` to the run command. So, for"
" example::"
msgstr ""
-#: ../../tutorial_app.rst:458
+#: ../../tutorial_app.rst:471
msgid "would make Bottle listen to port 80."
msgstr ""
-#: ../../tutorial_app.rst:460
+#: ../../tutorial_app.rst:473
msgid "To change the IP address where Bottle is listening::"
msgstr ""
-#: ../../tutorial_app.rst:464
+#: ../../tutorial_app.rst:477
msgid "If needed, both parameters can be combined, like::"
msgstr ""
-#: ../../tutorial_app.rst:468
+#: ../../tutorial_app.rst:481
msgid ""
"The ``port`` and ``host`` parameter can also be applied when Bottle is "
"running with a different server, as shown in the following section."
msgstr ""
-#: ../../tutorial_app.rst:472
+#: ../../tutorial_app.rst:485
msgid "Running Bottle with a different server"
msgstr ""
-#: ../../tutorial_app.rst:473
+#: ../../tutorial_app.rst:486
msgid ""
"As said above, the standard server is perfectly suitable for development, "
"personal use or a small group of people only using your application based on"
@@ -757,50 +770,50 @@ msgid ""
"it is single-threaded, thus it can only serve one request at a time."
msgstr ""
-#: ../../tutorial_app.rst:475
+#: ../../tutorial_app.rst:488
msgid ""
"But Bottle has already various adapters to multi-threaded servers on board, "
-"which perform better on higher load. Bottle supports Cherrypy_, Fapws3_, "
-"Flup_ and Paste_."
+"which perform better on higher load. Bottle supports Cherrypy_, Flup_ and "
+"Paste_."
msgstr ""
-#: ../../tutorial_app.rst:477
+#: ../../tutorial_app.rst:490
msgid ""
"If you want to run for example Bottle with the Paste server, use the "
"following code::"
msgstr ""
-#: ../../tutorial_app.rst:483
+#: ../../tutorial_app.rst:496
msgid ""
"This works exactly the same way with ``FlupServer``, ``CherryPyServer`` and "
"``FapwsServer``."
msgstr ""
-#: ../../tutorial_app.rst:487
+#: ../../tutorial_app.rst:500
msgid "Running Bottle on Apache with mod_wsgi"
msgstr ""
-#: ../../tutorial_app.rst:488
+#: ../../tutorial_app.rst:501
msgid ""
"Maybe you already have an Apache_ or you want to run a Bottle-based "
"application large scale - then it is time to think about Apache with "
"mod_wsgi_."
msgstr ""
-#: ../../tutorial_app.rst:490
+#: ../../tutorial_app.rst:503
msgid ""
"We assume that your Apache server is up and running and mod_wsgi is working "
"fine as well. On a lot of Linux distributions, mod_wsgi can be easily "
"installed via whatever package management system is in use."
msgstr ""
-#: ../../tutorial_app.rst:492
+#: ../../tutorial_app.rst:505
msgid ""
"Bottle brings an adapter for mod_wsgi with it, so serving your application "
"is an easy task."
msgstr ""
-#: ../../tutorial_app.rst:494
+#: ../../tutorial_app.rst:507
msgid ""
"In the following example, we assume that you want to make your application "
"\"ToDo list\" accessible through ``http://www.mypage.com/todo`` and your "
@@ -808,42 +821,42 @@ msgid ""
"``/var/www/todo``."
msgstr ""
-#: ../../tutorial_app.rst:496
+#: ../../tutorial_app.rst:509
msgid ""
"When you run your application via mod_wsgi, it is imperative to remove the "
"``run()`` statement from your code, otherwise it won't work here."
msgstr ""
-#: ../../tutorial_app.rst:498
+#: ../../tutorial_app.rst:511
msgid ""
"After that, create a file called ``adapter.wsgi`` with the following "
"content::"
msgstr ""
-#: ../../tutorial_app.rst:509
+#: ../../tutorial_app.rst:522
msgid ""
"and save it in the same path, ``/var/www/todo``. Actually the name of the "
"file can be anything, as long as the extension is ``.wsgi``. The name is "
"only used to reference the file from your virtual host."
msgstr ""
-#: ../../tutorial_app.rst:511
+#: ../../tutorial_app.rst:524
msgid ""
"Finally, we need to add a virtual host to the Apache configuration, which "
"looks like this::"
msgstr ""
-#: ../../tutorial_app.rst:527
+#: ../../tutorial_app.rst:540
msgid ""
"After restarting the server, your ToDo list should be accessible at "
"``http://www.mypage.com/todo``"
msgstr ""
-#: ../../tutorial_app.rst:530
+#: ../../tutorial_app.rst:543
msgid "Final Words"
msgstr ""
-#: ../../tutorial_app.rst:532
+#: ../../tutorial_app.rst:545
msgid ""
"Now we are at the end of this introduction and tutorial to Bottle. We "
"learned about the basic concepts of Bottle and wrote a first application "
@@ -851,7 +864,7 @@ msgid ""
"for large tasks and serve Bottle through an Apache web server with mod_wsgi."
msgstr ""
-#: ../../tutorial_app.rst:534
+#: ../../tutorial_app.rst:547
msgid ""
"As said in the introduction, this tutorial is not showing all shades and "
"possibilities of Bottle. What we skipped here is e.g. receiving file objects"
@@ -861,28 +874,28 @@ msgid ""
"documentation`_ ."
msgstr ""
-#: ../../tutorial_app.rst:537
+#: ../../tutorial_app.rst:550
msgid "Complete Example Listing"
msgstr ""
-#: ../../tutorial_app.rst:539
+#: ../../tutorial_app.rst:552
msgid ""
"As the ToDo list example was developed piece by piece, here is the complete "
"listing:"
msgstr ""
-#: ../../tutorial_app.rst:541
+#: ../../tutorial_app.rst:554
msgid "Main code for the application ``todo.py``::"
msgstr ""
-#: ../../tutorial_app.rst:655
+#: ../../tutorial_app.rst:675
msgid "Template ``make_table.tpl``::"
msgstr ""
-#: ../../tutorial_app.rst:669
+#: ../../tutorial_app.rst:689
msgid "Template ``edit_task.tpl``::"
msgstr ""
-#: ../../tutorial_app.rst:684
+#: ../../tutorial_app.rst:704
msgid "Template ``new_task.tpl``::"
msgstr ""