summaryrefslogtreecommitdiff
path: root/docs/_locale/de_DE/LC_MESSAGES
diff options
context:
space:
mode:
Diffstat (limited to 'docs/_locale/de_DE/LC_MESSAGES')
-rw-r--r--docs/_locale/de_DE/LC_MESSAGES/api.po147
-rw-r--r--docs/_locale/de_DE/LC_MESSAGES/async.po6
-rw-r--r--docs/_locale/de_DE/LC_MESSAGES/changelog.po489
-rw-r--r--docs/_locale/de_DE/LC_MESSAGES/configuration.po130
-rw-r--r--docs/_locale/de_DE/LC_MESSAGES/contact.po13
-rw-r--r--docs/_locale/de_DE/LC_MESSAGES/deployment.po193
-rw-r--r--docs/_locale/de_DE/LC_MESSAGES/development.po226
-rw-r--r--docs/_locale/de_DE/LC_MESSAGES/faq.po36
-rw-r--r--docs/_locale/de_DE/LC_MESSAGES/index.po62
-rw-r--r--docs/_locale/de_DE/LC_MESSAGES/plugindev.po10
-rw-r--r--docs/_locale/de_DE/LC_MESSAGES/plugins/index.po138
-rw-r--r--docs/_locale/de_DE/LC_MESSAGES/recipes.po115
-rw-r--r--docs/_locale/de_DE/LC_MESSAGES/routing.po65
-rw-r--r--docs/_locale/de_DE/LC_MESSAGES/stpl.po60
-rw-r--r--docs/_locale/de_DE/LC_MESSAGES/tutorial.po317
-rw-r--r--docs/_locale/de_DE/LC_MESSAGES/tutorial_app.po359
16 files changed, 1439 insertions, 927 deletions
diff --git a/docs/_locale/de_DE/LC_MESSAGES/api.po b/docs/_locale/de_DE/LC_MESSAGES/api.po
index e753648..b74b640 100644
--- a/docs/_locale/de_DE/LC_MESSAGES/api.po
+++ b/docs/_locale/de_DE/LC_MESSAGES/api.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,8 +9,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:10+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: German (Germany) (http://www.transifex.com/bottle/bottle/language/de_DE/)\n"
"MIME-Version: 1.0\n"
@@ -48,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: "
@@ -203,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 ""
@@ -232,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 ""
@@ -339,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 ""
@@ -360,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 ""
@@ -405,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 ""
@@ -413,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 ""
@@ -439,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 "
@@ -497,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 ""
@@ -625,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 ""
@@ -708,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
@@ -719,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 "
@@ -907,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
@@ -926,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 ""
@@ -969,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
@@ -1049,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 ""
@@ -1213,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 "
@@ -1251,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/de_DE/LC_MESSAGES/async.po b/docs/_locale/de_DE/LC_MESSAGES/async.po
index 5c9e801..7152b43 100644
--- a/docs/_locale/de_DE/LC_MESSAGES/async.po
+++ b/docs/_locale/de_DE/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,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:08+0000\n"
+"POT-Creation-Date: 2020-12-31 18:35+0100\n"
+"PO-Revision-Date: 2017-08-03 11:49+0000\n"
"Last-Translator: defnull <marc@gsites.de>\n"
"Language-Team: German (Germany) (http://www.transifex.com/bottle/bottle/language/de_DE/)\n"
"MIME-Version: 1.0\n"
diff --git a/docs/_locale/de_DE/LC_MESSAGES/changelog.po b/docs/_locale/de_DE/LC_MESSAGES/changelog.po
index 12e9107..ba06f24 100644
--- a/docs/_locale/de_DE/LC_MESSAGES/changelog.po
+++ b/docs/_locale/de_DE/LC_MESSAGES/changelog.po
@@ -1,14 +1,14 @@
# 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-12-13 21:08+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: German (Germany) (http://www.transifex.com/bottle/bottle/language/de_DE/)\n"
"MIME-Version: 1.0\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/de_DE/LC_MESSAGES/configuration.po b/docs/_locale/de_DE/LC_MESSAGES/configuration.po
index a6f9708..82d4326 100644
--- a/docs/_locale/de_DE/LC_MESSAGES/configuration.po
+++ b/docs/_locale/de_DE/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 21:08+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: German (Germany) (http://www.transifex.com/bottle/bottle/language/de_DE/)\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/de_DE/LC_MESSAGES/contact.po b/docs/_locale/de_DE/LC_MESSAGES/contact.po
index 9a6e0a6..de5b1aa 100644
--- a/docs/_locale/de_DE/LC_MESSAGES/contact.po
+++ b/docs/_locale/de_DE/LC_MESSAGES/contact.po
@@ -1,14 +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:
+# Charles LeMagne, 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:08+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: German (Germany) (http://www.transifex.com/bottle/bottle/language/de_DE/)\n"
"MIME-Version: 1.0\n"
@@ -22,7 +23,7 @@ msgid "Contact"
msgstr ""
#: ../../contact.rst:6
-msgid "About the Autor"
+msgid "About the Author"
msgstr ""
#: ../../contact.rst:7
@@ -39,14 +40,14 @@ msgstr ""
#: ../../contact.rst:10
msgid "About Bottle"
-msgstr ""
+msgstr "Ãœber Bottle"
#: ../../contact.rst:11
msgid ""
"This is my first open source project so far. It started and a small "
"experiment but soon got so much positive feedback I decided to make "
"something real out of it. Here it is."
-msgstr ""
+msgstr "Dies ist soweit mein erstes Open Source Projekt."
#: ../../contact.rst:14
msgid "Impressum und Kontaktdaten"
diff --git a/docs/_locale/de_DE/LC_MESSAGES/deployment.po b/docs/_locale/de_DE/LC_MESSAGES/deployment.po
index 81eedfc..5d81139 100644
--- a/docs/_locale/de_DE/LC_MESSAGES/deployment.po
+++ b/docs/_locale/de_DE/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 21:08+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: German (Germany) (http://www.transifex.com/bottle/bottle/language/de_DE/)\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/de_DE/LC_MESSAGES/development.po b/docs/_locale/de_DE/LC_MESSAGES/development.po
index d6a0020..2bafd37 100644
--- a/docs/_locale/de_DE/LC_MESSAGES/development.po
+++ b/docs/_locale/de_DE/LC_MESSAGES/development.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:
+# Charles LeMagne, 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:08+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: Charles LeMagne\n"
"Language-Team: German (Germany) (http://www.transifex.com/bottle/bottle/language/de_DE/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -19,44 +20,44 @@ msgstr ""
#: ../../development.rst:2
msgid "Developer Notes"
-msgstr ""
+msgstr "Entwicklernotizen"
#: ../../development.rst:4
msgid ""
"This document is intended for developers and package maintainers interested "
"in the bottle development and release workflow. If you want to contribute, "
"you are just right!"
-msgstr ""
+msgstr "Dieses Dokument ist für Entwickler und Paketbetreuer gedacht die Interesse an der Entwicklung und dem Veröffentlichungsworkflow von bottle haben.\nWenn du etwas beitragen möchtest, dann bist du genau richtig!"
#: ../../development.rst:8
msgid "Get involved"
-msgstr ""
+msgstr "Beteiligen"
#: ../../development.rst:10
msgid ""
"There are several ways to join the community and stay up to date. Here are "
"some of them:"
-msgstr ""
+msgstr "Es gibt einige Wege der Community beizutreten und auf dem neuesten Stand zu bleiben. Hier sind ein paar davon:"
#: ../../development.rst:12
msgid ""
"**Mailing list**: Join our mailing list by sending an email to "
"`bottlepy+subscribe@googlegroups.com "
"<mailto:bottlepy+subscribe@googlegroups.com>`_ (no google account required)."
-msgstr ""
+msgstr "**Mailing list**: Tritt unserer Mailingliste bei indem du eine e-Mail an `bottlepy+subscribe@googlegroups.com <mailto:bottlepy+subscribe@googlegroups.com>` sendest. (Ein Google Account wird nicht benötigt)"
#: ../../development.rst:13
msgid ""
"**Twitter**: `Follow us on Twitter <https://twitter.com/bottlepy>`_ or "
"search for the `#bottlepy <https://twitter.com/#!/search/%23bottlepy>`_ tag."
-msgstr ""
+msgstr "**Twitter**: `Folge uns auf Twitter <https://twitter.com/bottlepy>`_ oder suche nach dem `#bottlepy <https://twitter.com/#!/search/%23bottlepy>`_ tag."
#: ../../development.rst:14
msgid ""
"**IRC**: Join `#bottlepy on irc.freenode.net "
"<irc://irc.freenode.net/bottlepy>`_ or use the `web chat interface "
"<http://webchat.freenode.net/?channels=bottlepy>`_."
-msgstr ""
+msgstr "**IRC**: Tritt `#bottlepy auf irc.freenode.net bei <irc://irc.freenode.net/bottlepy>`_ oder nutze die `Webchat Oberfläche <http://webchat.freenode.net/?channels=bottlepy>`_."
#: ../../development.rst:15
msgid ""
@@ -64,11 +65,11 @@ msgid ""
"stuff "
"<https://plus.google.com/b/104025895326575643538/104025895326575643538/posts>`_"
" on our Google+ page."
-msgstr ""
+msgstr "**Google plus**: Ab und an `blogen wir über Bottle, Veröffentlichungen und technischen Kram <https://plus.google.com/b/104025895326575643538/104025895326575643538/posts>`_ auf unserer Google+ Seite."
#: ../../development.rst:19
msgid "Get the Sources"
-msgstr ""
+msgstr "Die Quelldateien holen"
#: ../../development.rst:21
msgid ""
@@ -80,32 +81,32 @@ msgid ""
"developers and can be discussed openly. Even without an account, you can "
"clone the repository or just download the latest development version as a "
"source archive."
-msgstr ""
+msgstr "Das bottle `Entwicklungs-repository <https://github.com/bottlepy/bottle>`_ und der `Issue-tracker <https://github.com/bottlepy/bottle/issues>`_ sind beide auf `github <https://github.com/bottlepy/bottle>`_ zu finden."
#: ../../development.rst:23
msgid "**git:** ``git clone git://github.com/bottlepy/bottle.git``"
-msgstr ""
+msgstr "**git:** ``git clone git://github.com/bottlepy/bottle.git``"
#: ../../development.rst:24
msgid "**git/https:** ``git clone https://github.com/bottlepy/bottle.git``"
-msgstr ""
+msgstr "**git/https:** ``git clone https://github.com/bottlepy/bottle.git``"
#: ../../development.rst:25
msgid ""
"**Download:** Development branch as `tar archive "
"<http://github.com/bottlepy/bottle/tarball/master>`_ or `zip file "
"<http://github.com/bottlepy/bottle/zipball/master>`_."
-msgstr ""
+msgstr "**Download:** Entwicklungs branch als `tar Archiv <http://github.com/bottlepy/bottle/tarball/master>`_ oder `zip Datei <http://github.com/bottlepy/bottle/zipball/master>`_."
#: ../../development.rst:26
msgid ""
"**Translations:** `transifex.com/projects/p/bottle "
"<https://www.transifex.com/projects/p/bottle/>`_"
-msgstr ""
+msgstr "**Ãœbersetzungen:** `transifex.com/projects/p/bottle <https://www.transifex.com/projects/p/bottle/>`_"
#: ../../development.rst:30
msgid "Releases and Updates"
-msgstr ""
+msgstr "Veröffentlichungen und Updates"
#: ../../development.rst:32
msgid ""
@@ -114,7 +115,7 @@ msgid ""
"revisions of outdated releases are only available from the git repository "
"mentioned above. Some Linux distributions may offer packages for outdated "
"releases, though."
-msgstr ""
+msgstr "Bottle wird in unregelmäßigen Abständen veröffentlicht und über `PyPI <http://pypi.python.org/pypi/bottle>`_ verteilt. Veröffentlichungskandidaten und bugfix-Revisionen von veralteten Veröffentlichungen sind nur über das oben genannte Git-Repository verfügbar. Einige Linux-Distributionen bieten jedoch möglicherweise Paket aus veralteten Veröffentlichungen an."
#: ../../development.rst:34
msgid ""
@@ -124,11 +125,11 @@ msgid ""
" in at least the two latest minor releases and announced in all available "
"channels (mailinglist, twitter, github). Non-critical bugs or features are "
"not guaranteed to be backported. This may change in the future, through."
-msgstr ""
+msgstr "Die Bottle Versionsnummer ist in drei Teile unterteilt (**major.minor.revision**). Diese werden *nicht* dazu genutzt um neue Funktionen zu bewerben, sondern um wichtige bug-fixes und/oder Änderungen an der API zu indizieren. Kritische Fehler werden in den letzten zwei stabilen Veröffentlichungen behoben und über alle Kanäle mitgeteilt (Mailinglisten, Twitter, Github). Nicht kritische Fehler oder Features werden garantiert zurückgestellt. Dies wird sich eventuell in der Zukunft ändern. "
#: ../../development.rst:37
msgid "Major Release (x.0)"
-msgstr ""
+msgstr "Major Release (x.0)"
#: ../../development.rst:37
msgid ""
@@ -136,11 +137,11 @@ msgid ""
"that completely break backward compatibility. You probably have to work over"
" your entire application to use a new release. These releases are very rare,"
" through."
-msgstr ""
+msgstr "Die major release Nummer vergrößert sich bei wichtigen Meilensteinen oder Aktualisierungen die die Abwärtskompatibilität vollständig unterbrechen. Du musst wahrscheinlich deine komplette Anwendung überarbeiten um mit einer neuen Veröffentlichung zu arbeiten. Diese Veröffentlichungen sind allerdings sehr selten."
#: ../../development.rst:40
msgid "Minor Release (x.y)"
-msgstr ""
+msgstr "Minor Release (x.y)"
#: ../../development.rst:40
msgid ""
@@ -151,11 +152,11 @@ msgid ""
" one minor release. You should update to stay up do date, but don't have to."
" An exception is 0.8, which *will* break backward compatibility hard. (This "
"is why 0.7 was skipped). Sorry about that."
-msgstr ""
+msgstr "Die minor release Nummer vergrößert sich bei Aktualisierungen welche die API oder das Verhalten in irgendeiner Weise beeinflussen. Es kann zu deprecation Warnungen kommen und eventuell musst du einige Einstellungen anpassen um das alte Verhalten wiederherzustellen, in den meisten Fällen sind diese Änderungen jedoch so entwickelt dass mindestens zum letzten minor release abwärtskompatibel sind. Du solltest updaten, um up-to-date zu bleiben, musst allerdings nicht. Eine Ausnahme stellt 0.8 dar, welches hart mit der Abwärtskompatibilität brechen *wird*. (Dies ist der Grund warum 0.7 übersprungen wurde.) Das tut mir Leid."
#: ../../development.rst:43
msgid "Revision (x.y.z)"
-msgstr ""
+msgstr "Revision (x.y.z)"
#: ../../development.rst:43
msgid ""
@@ -163,40 +164,40 @@ msgid ""
"change the API or behaviour. You can safely update without editing your "
"application code. In fact, you really should as soon as possible, because "
"important security fixes are released this way."
-msgstr ""
+msgstr "Die Revisionsnummer erhöht sich bei Fehlerbehebungen und anderen Patches welche das API-Verhalten nicht beeinflussen. Du kannst sicher updaten ohne den Code deiner Applikation bearbeiten zu müssen. In der Tat solltest du dies auch so schnell wie möglich tun, da auf diese Art wichtige Sicherheitsfixes veröffentlicht werden."
#: ../../development.rst:47
msgid "Pre-Release Versions"
-msgstr ""
+msgstr "Pre-Release Versionen"
#: ../../development.rst:46
msgid ""
"Release candidates are marked by an ``rc`` in their revision number. These "
"are API stable most of the time and open for testing, but not officially "
"released yet. You should not use these for production."
-msgstr ""
+msgstr "Veröffentlichungskandidaten sind durch ein ``rc`` in ihrer Versionsnummer gekennzeichnet. Diese sind meistens API stabil und offen zur Prüfung, jedoch noch nicht offiziell veröffentlicht. Du solltest sie nicht in einer Produktivumgebung einsetzen."
#: ../../development.rst:50
msgid "Repository Structure"
-msgstr ""
+msgstr "Repositorystruktur"
#: ../../development.rst:52
msgid "The source repository is structured as follows:"
-msgstr ""
+msgstr "Die Struktur des Quellrepositorys ist wie folgt:"
#: ../../development.rst:55
-msgid "master branch"
-msgstr ""
+msgid "``master`` branch"
+msgstr "``master`` Branch"
#: ../../development.rst:55
msgid ""
"This is the integration, testing and development branch. All changes that "
"are planned to be part of the next release are merged and tested here."
-msgstr ""
+msgstr "Dies ist der Integrations-, Test und Entwicklungsbranch. Alle Änderungen die planmäßig Teil der nächsten Veröffentlichung werden, werden hier zusammengeführt und getestet."
#: ../../development.rst:58
-msgid "release-x.y branches"
-msgstr ""
+msgid "``release-x.y`` branches"
+msgstr "``release-x.y`` Branches"
#: ../../development.rst:58
msgid ""
@@ -207,66 +208,55 @@ msgid ""
"is called a \"support branch\" and still receives bug-fixes, but only "
"important ones. The revision number is increased on each push to these "
"branches, so you can keep up with important changes."
-msgstr ""
-
-#: ../../development.rst:61
-msgid "bugfix_name-x.y branches"
-msgstr ""
+msgstr "Sobald ein Master Branch (fast) bereit zur Veröffentlichung ist wird er in einen neuen Veröffentlichungs Branch verzweigt. Dieser \"Veröffentlichungskandidat\" ist feature-frozen, erfährt allerdings möglicherweise noch Fehlerbehebungen und Änderungen in letzter Minute bevor er als Produktionsreif angesehen und offiziell veröffentlicht wird. Von diesem Punkt an wird er \"support branch\" genannt und erhält immer noch Fehlerbehebungen, allerdings nur wichtige. Die Revisionsnummer wird mit jedem push in diesem Branch erhöht, sodass du mit wichtigen Änderungen mithalten kannst."
-#: ../../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 ""
+msgstr "Feature Branches"
-#: ../../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 ""
+msgstr "Alle anderen Branches sind Feature Branches. Diese basieren auf dem Master Branch und leben nur solange sie noch aktiv sind und nicht wieder mit ``master`` zusammengeführt wurden."
-#: ../../development.rst:68
+#: ../../development.rst:65
msgid "What does this mean for a developer?"
-msgstr ""
+msgstr "Was bedeutet dies für den Entwickler?"
-#: ../../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 "
"use a separate branch for each feature or bug to make integration as easy as"
" possible. Thats all. There are git workflow examples at the bottom of this "
"page."
-msgstr ""
+msgstr "Wenn du ein Feature hinzufügen willst, erstelle einen neuen Branch aus ``master``. Wenn du einen Fehler beheben möchtest, branche `release-x.y`` für jede betroffene Veröffentlichung. Bitte nutze einen separaten Branch für jedes Feature und jeden Fehler um die Integration so einfach wie möglich zu halten. Das ist alles. Es gibt git-workflow am Ende dieser Seite."
-#: ../../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 ""
+msgstr "Oh, und ändere niemals die Releasenummer. Wir machen dies während der Integration. Du weißt eh nie in welcher Reihenfolge wir die ausstehenden Anfragen einbeziehen :)"
-#: ../../development.rst:75
+#: ../../development.rst:72
msgid "What does this mean for a maintainer ?"
-msgstr ""
+msgstr "Was bedeutet dies für den Betreuer?"
-#: ../../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, "
"not the branches. A branch may contain changes that are not released yet, "
"but a tag marks the exact commit which changed the version number."
-msgstr ""
+msgstr "Behalte die Tags (und die Mailingliste) im Auge um Fehlerkorrekturen und neue Veröffentlichungen mitzubekommen. Wenn du eine bestimmte Version aus dem git-Repository holen willst vertraue den Tags, nicht den branches. Ein Branch enthält möglicherweise Änderungen die noch nicht veröffentlicht sind, Tags hingegen indizieren das exakte Commit welches die Versionsnummer geändert hat."
-#: ../../development.rst:80
+#: ../../development.rst:77
msgid "Submitting Patches"
-msgstr ""
+msgstr "Patches Einreichen"
-#: ../../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, "
@@ -274,173 +264,173 @@ msgid ""
"small collection of git workflow examples that may guide you. Submitting "
"git-compatible patches to the mailing list is fine too. In any case, please "
"follow some basic rules:"
-msgstr ""
+msgstr "Der beste Weg um deine Änderungen in den Hauptentwicklungsbranch zu integrieren ist, das Hauptrepository zu forken, einen neuen Feature Branch zu erstellen, deine Änderungen vorzunehmen und ein pull-request zu senden. Weiter unten auf dieser Seite befindet sich eine kleine Sammlung von git workflow Beispielislen die dir behilflich sein können. Git-kompatible patches über die Mailingliste einzurichen ist auch gut. In jedem Fall beachte bitte folgende Regeln:"
-#: ../../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 ""
+msgstr "**Dukomentation:** Sag uns was dein patch macht. Kommentiere deinen Code. Wenn du ein neues Feature vorstellst, füge es der Dokumentation hinzu, sodass Anderes etwas darüber lernen können."
-#: ../../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 ""
+msgstr "**Test:** Schreibe Tests um nachzuweisen dass dein Code wie geplant funktioniert und nichts kaputt macht. Wenn du einen Fehler behoben hast, schreibe mindestens einen Testfall, welcher den Fehler auslöst. Stelle sicher dass alle Tests durchlaufen bevor du ein Patch einreichst."
-#: ../../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 ""
+msgstr "**Ein Patch zur selben Zeit:** Behebe nur einen Fehler oder füge nur ein Feature zur selben Zeit hinzu. Entwickle deine Patches so, dass sie als Ganzes angewendet werden können. Halte deine Patches sauber, klein und fokussiert."
-#: ../../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 ""
+msgstr "**Synchronisere mit upstream:** Wenn sich der ``upstream/master`` Branch geändert hat während du an deinem Patch gearbeitet hast, führe ein rebase oder pull durch um sicherzustellen dass dein Patch noch zu dem Konflikt passt."
-#: ../../development.rst:91
+#: ../../development.rst:88
msgid "Building the Documentation"
-msgstr ""
+msgstr "Die Dokumentation erstellen"
-#: ../../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 ""
+msgstr "Du brauchst eine aktuelle Version von Sphinx um die Dokumentation zu erstellen. Der empfohlene Ablauf ist ` :command:`virtualenv` aus deinem Distributionspackage Repository und Sphinx manuell zu installieren um eine aktuelle Version zu erhalten."
-#: ../../development.rst:124
+#: ../../development.rst:121
msgid "GIT Workflow Examples"
-msgstr ""
+msgstr "GIT Workflow Beispiele"
-#: ../../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 ""
+msgstr "Die folgenden Beispiele nehmen an dass du einen (kostnelosen) `Github Account <https://github.com>`_ besitzt. Dies ist nicht notwendig, erleichtert die Dinge jedoch sehr."
-#: ../../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 "
"project page <https://github.com/bottlepy/bottle>`_. When the fork is done, "
"you will be presented with a short introduction to your new repository."
-msgstr ""
+msgstr "Als Erstes musst du eine Fork (ein persönlicher Klon) des offiziellen Repositorys erstellen. Um dies zu tun klicke einfach auf den \"fork\" Button auf der `bottle Projektseite <https://github.com/bottlepy/bottle>`_. Wenn das Forken erledigt ist, wirst du eine kurze Einführung in dein neues Repository präsentiert bekommen. "
-#: ../../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 "
"make changes to it. Make sure you use the private (read-write) URL and *not*"
" the public (read-only) one::"
-msgstr ""
+msgstr "Die Fork die du erstellt hast ist auf github gehostet und lesbar für jeden, schreibbar jedoch nur für dich. Jetzt musst du die Fork lokal klonen um tatsächlich Änderungen daran vorzunehmen. Stelle sicher dass du die private (lesen-schreiben) URL und *nicht* die öffentliche (nur lesen) nutzt::"
-#: ../../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 "
"you, this does not point to the original bottle repository, but to your own "
"fork. To keep track of the official repository, add another remote named "
"\"upstream\"::"
-msgstr ""
+msgstr "Sobald dein Klon vollständig ist wird dein Repository eine remote namens \"origin\" haben die auf deine Fork auf github zeigt. Lass dich nicht von den Namen irritieren, sie zeigt nicht auf das originale bottle Repository, sondern auf deine eigene Fork. Um mit Änderungen an dem offiziellen repository auf dem Laufenden zu bleiben füge eine weitere remote namens \"upstream\" hinzu::"
-#: ../../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 ""
+msgstr "Bedenke dass \"upstream\" eine öffentliche Klon-URL ist und nur lesbar. Du kannst keine Änderungen direkt dorthin pushen. Stattdessen werden wir von deinem öffentlichen Repository pullen. Dies wird später beschrieben."
-#: ../../development.rst:143
+#: ../../development.rst:140
msgid "Submit a Feature"
-msgstr ""
+msgstr "Ein Feature einreichen"
-#: ../../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, "
"they must be based on ``upstream/master``. To create a new feature-branch, "
"type the following::"
-msgstr ""
+msgstr "Neue Features werden in separaten Feature-Branches entwickelt um deren Integration zu vereinfachen. Da sie in den ``master`` Branch integriert werden müssen sie auf ``upstream/master`` basieren. Um einen neuen Feature-Branch zu erstellen, gib das Folgende ein:"
-#: ../../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 ""
+msgstr "Jetzt implementiere dein Feature, schreibe Tests, aktualisiere die Dokumentation, stelle sicher dass alle Tests durchlaufen und committe deine Änderungen."
-#: ../../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 ""
+msgstr "Wenn sich ``upstream/master`` zwischenzeitlich geändert hat können Konflikte mit deinen Änderungen entstehen. Um diese zu lösen 'rebase' deinen Feature-Branch auf den aktualisieren ``upstream/master`` Branch::"
-#: ../../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 "
"branch already (see next step), this is not an option because it rewrites "
"your history. You can do a normal pull instead. Resolve any conflicts, run "
"the tests again and commit."
-msgstr ""
+msgstr "Dies ist gleichbedeutend mit der Rückgängigmachung all deiner Änderungen, deinen Branch upzudaten und deine Patches erneut anzuwenden. Wenn du deinen Branch bereits veröffentlicht hast (siehe nächster Schritt) ist dies keine Option, da es deinen Verlauf neu schreibt. Du kannst stattdessen einen normalen Pull machen. Löse alle Konflikte, führe die Tests durch und committe erneut."
-#: ../../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 ""
+msgstr "Jetzt bist du beinahe bereit ein pull-request zu senden. Aber als ersten muss du deinen Feature-Branch öffentlich machen indem du ihn in deine Github-Fork pushst. "
-#: ../../development.rst: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 "
"be to start a thread in the mailing-list, which is recommended. It allows "
"other developers to see and discuss your patches and you get some feedback "
"for free :)"
-msgstr ""
+msgstr "Nachdem du deinen commit gepusht hast musst du uns über das neue Feature informieren. Eine Möglichkeit ist, ein pull-request über Github zu senden. Eine Andere wäre, einen neuen Thread in der Mailingliste zu starten, was empfohlen wird. Es erlaubt anderen Entwicklern deine Patches zu sehen und zu diskutieren und du bekommst gratis Feedback :)"
-#: ../../development.rst: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 ""
+msgstr "Wenn wir dein Patch akzeptieren werden wir es in den offiziellen Entwickungs Branch integrieren und es wird Teil der nächsten Veröffentlichung."
-#: ../../development.rst:168
+#: ../../development.rst:165
msgid "Fix a Bug"
-msgstr ""
+msgstr "Einen Fehler beheben"
-#: ../../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 ""
+msgstr "Der Workflow für Fehlerbehebungen ist dem für Features sehr ähnlich, jedoch gibt es ein paar Unterschiede:"
-#: ../../development.rst:171
+#: ../../development.rst:168
msgid ""
"Branch off of the affected release branches instead of just the development "
"branch."
-msgstr ""
+msgstr "Branche von dem betroffenen Release-Branch anstelle des Entwicklungs-Branches."
-#: ../../development.rst:172
+#: ../../development.rst:169
msgid "Write at least one test-case that triggers the bug."
-msgstr ""
+msgstr "Schreibe mindestens einen Testfall der den Fehler auslöst."
-#: ../../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 ""
+msgstr "Tue dies für jeden betroffenen Branch, eingeschlossen ``upstream/master`` sofern dieser betroffen ist. ``git cherry-pick`` kann dir eventuell helfen sich wiederholende Arbeitsschritte zu minimieren."
-#: ../../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``."
-msgstr ""
+msgstr "Benenne deinen Branch nach der Veröffentlichung auf der er basiert um Verwechslungen zu vermeiden. \nBeispiele: ``my_bugfix-x.y`` oder ``my_bugfix-dev``."
diff --git a/docs/_locale/de_DE/LC_MESSAGES/faq.po b/docs/_locale/de_DE/LC_MESSAGES/faq.po
index 70e0fe8..4a9a7c1 100644
--- a/docs/_locale/de_DE/LC_MESSAGES/faq.po
+++ b/docs/_locale/de_DE/LC_MESSAGES/faq.po
@@ -1,14 +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:
+# Charles LeMagne, 2017
+# Charles LeMagne, 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:08+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: German (Germany) (http://www.transifex.com/bottle/bottle/language/de_DE/)\n"
"MIME-Version: 1.0\n"
@@ -19,15 +21,15 @@ msgstr ""
#: ../../faq.rst:10
msgid "Frequently Asked Questions"
-msgstr ""
+msgstr "Häufig gestellte Fragen"
#: ../../faq.rst:13
msgid "About Bottle"
-msgstr ""
+msgstr "Ãœber Bottle"
#: ../../faq.rst:16
msgid "Is bottle suitable for complex applications?"
-msgstr ""
+msgstr "Ist Bottle für komplexe Anwendungen geeignet?"
#: ../../faq.rst:18
msgid ""
@@ -38,15 +40,15 @@ msgid ""
" XML-RPC). Although it *is* possible to add these features and build complex"
" applications with Bottle, you should consider using a full-stack Web "
"framework like pylons_ or paste_ instead."
-msgstr ""
+msgstr "Bottle ist ein *micro*-Framework, entworfen für Prototyping und kleine Webanwendungen und -services.\nEs hält sich im Hintergrund und erlaubt es dir die Dinge schnell erledigt zu bekommen, ihm fehlen allerdings einige fortgeschnittenere Eigenschaften und ready-to-use Lösungen wie sie in anderen Frameworks zu finden sind (MVC, ORM, Formularvalidierung, Scaffolding, CML-RPC). Auch *wenn* es möglich ist diese hinzuzufügen und komplexere Anwendungen mit Bottle zu entwickeln, solltest du in Betracht ziehen ein vollwertiges Web-Framework wie pylons oder paste zu benutzen."
#: ../../faq.rst:22
msgid "Common Problems and Pitfalls"
-msgstr ""
+msgstr "Häufige Probleme und Fallstricke"
#: ../../faq.rst:29
msgid "\"Template Not Found\" in mod_wsgi/mod_python"
-msgstr ""
+msgstr "\"Template nicht gefunden\" in mod_wsgi/mod_python"
#: ../../faq.rst:31
msgid ""
@@ -54,29 +56,29 @@ msgid ""
"or mod_wsgi_ environment, the working directory (``./``) depends on your "
"Apache settings. You should add an absolute path to the template search "
"path::"
-msgstr ""
+msgstr "Bottle sucht in ``./`` und ``./views/`` nach Templates. In einer mod_python_ oder mod_wsgi_ Umgebung hängt das Arbeitsverzeichnis (``./``) von deinen Apache Einstellungen ab. Du solltest dem Templatepfad einen absoluten Pfad hinzufügen"
#: ../../faq.rst:35
msgid "so bottle searches the right paths."
-msgstr ""
+msgstr "damit Bottle den richtigen Pfad nutzt."
#: ../../faq.rst:38
msgid "Dynamic Routes and Slashes"
-msgstr ""
+msgstr "Dynamische Routen und Schrägstriche"
#: ../../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
msgid "Problems with reverse proxies"
-msgstr ""
+msgstr "Probleme mit Reverse-Proxies"
#: ../../faq.rst:45
msgid ""
@@ -86,4 +88,4 @@ msgid ""
"example, the ``wsgi.url_scheme`` value or the ``Host`` header might reflect "
"the local request by your proxy, not the real request by the client. Here is"
" a small WSGI middleware snippet that helps to fix these values::"
-msgstr ""
+msgstr "Umleitungen und URL-building funktioniert nur wenn Bottle die öffentliche Adresse und den Ort deiner Anwendung kennt. Nutzt du Bottle lokal hinter einem Reverse-Proxie oder einem Load-Balancer können auf dem Weg Informationen verloren gehen.\nZum Beispiel könnte der ``wsgi.url_scheme``-Wert oder der ``Host``-Header die lokale Anfrage deines Proxys widerspiegeln und nicht die echte Anfrage des Clients.\nHier ist eine kleines WSGI-Middleware Snipptes welches dir hilft diese Werte zu korrigieren:"
diff --git a/docs/_locale/de_DE/LC_MESSAGES/index.po b/docs/_locale/de_DE/LC_MESSAGES/index.po
index 28095fc..5a552b4 100644
--- a/docs/_locale/de_DE/LC_MESSAGES/index.po
+++ b/docs/_locale/de_DE/LC_MESSAGES/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:
@@ -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:08+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: German (Germany) (http://www.transifex.com/bottle/bottle/language/de_DE/)\n"
"MIME-Version: 1.0\n"
@@ -17,112 +17,116 @@ msgstr ""
"Language: de_DE\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../../index.rst:21
+#: ../../index.rst:20
msgid "Bottle: Python Web Framework"
msgstr ""
-#: ../../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 ""
-#: ../../index.rst:26
+#: ../../index.rst:25
msgid ""
"**Routing:** Requests to function-call mapping with support for clean and "
"dynamic URLs."
msgstr ""
-#: ../../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 ""
-#: ../../index.rst:28
+#: ../../index.rst:27
msgid ""
"**Utilities:** Convenient access to form data, file uploads, cookies, "
"headers and other HTTP-related metadata."
msgstr ""
-#: ../../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."
+"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 ""
-#: ../../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 ""
-#: ../../index.rst:46
+#: ../../index.rst:45
msgid "Download and Install"
msgstr ""
-#: ../../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+**."
+"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 ""
-#: ../../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 ""
-#: ../../index.rst:68
+#: ../../index.rst:71
msgid "Knowledge Base"
msgstr ""
-#: ../../index.rst:69
+#: ../../index.rst:72
msgid "A collection of articles, guides and HOWTOs."
msgstr ""
-#: ../../index.rst:81
+#: ../../index.rst:84
msgid "Development and Contribution"
msgstr ""
-#: ../../index.rst:83
+#: ../../index.rst:86
msgid ""
"These chapters are intended for developers interested in the bottle "
"development and release workflow."
msgstr ""
-#: ../../index.rst:100
+#: ../../index.rst:103
msgid "License"
msgstr ""
-#: ../../index.rst:102
+#: ../../index.rst:105
msgid "Code and documentation are available according to the MIT License:"
msgstr ""
-#: ../../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 ""
-#: ../../index.rst:112
+#: ../../index.rst:115
msgid "Footnotes"
msgstr ""
-#: ../../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/de_DE/LC_MESSAGES/plugindev.po b/docs/_locale/de_DE/LC_MESSAGES/plugindev.po
index 690943e..83b5776 100644
--- a/docs/_locale/de_DE/LC_MESSAGES/plugindev.po
+++ b/docs/_locale/de_DE/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 21:08+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: German (Germany) (http://www.transifex.com/bottle/bottle/language/de_DE/)\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/de_DE/LC_MESSAGES/plugins/index.po b/docs/_locale/de_DE/LC_MESSAGES/plugins/index.po
index 9128926..b3a3010 100644
--- a/docs/_locale/de_DE/LC_MESSAGES/plugins/index.po
+++ b/docs/_locale/de_DE/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:
@@ -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:08+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: German (Germany) (http://www.transifex.com/bottle/bottle/language/de_DE/)\n"
"MIME-Version: 1.0\n"
@@ -35,7 +35,7 @@ msgid ""
msgstr ""
#: ../../plugins/index.rst:12
-msgid "Bottle-Beaker"
+msgid "`Bottle-Beaker <http://pypi.python.org/pypi/bottle-beaker/>`_"
msgstr ""
#: ../../plugins/index.rst:12
@@ -43,7 +43,7 @@ msgid "Beaker to session and caching library with WSGI Middleware"
msgstr ""
#: ../../plugins/index.rst:15
-msgid "Bottle-Cork"
+msgid "`Bottle-Cork <http://cork.firelet.net/>`_"
msgstr ""
#: ../../plugins/index.rst:15
@@ -53,112 +53,188 @@ msgid ""
msgstr ""
#: ../../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."
+msgid ""
+"Cors-plugin is the easiest way to implement cors on your bottle web "
+"application"
msgstr ""
#: ../../plugins/index.rst:21
-msgid "Bottle-Flash"
+msgid "`Bottle-Extras <http://pypi.python.org/pypi/bottle-extras/>`_"
msgstr ""
#: ../../plugins/index.rst:21
-msgid "flash plugin for bottle"
+msgid "Meta package to install the bottle plugin collection."
msgstr ""
#: ../../plugins/index.rst:24
-msgid "Bottle-Hotqueue"
+msgid "`Bottle-Flash <http://pypi.python.org/pypi/bottle-flash/>`_"
msgstr ""
#: ../../plugins/index.rst:24
-msgid "FIFO Queue for Bottle built upon redis"
+msgid "flash plugin for bottle"
msgstr ""
#: ../../plugins/index.rst:27
-msgid "Macaron"
+msgid "`Bottle-Hotqueue <http://pypi.python.org/pypi/bottle-hotqueue/>`_"
msgstr ""
#: ../../plugins/index.rst:27
-msgid "Macaron is an object-relational mapper (ORM) for SQLite."
+msgid "FIFO Queue for Bottle built upon redis"
msgstr ""
#: ../../plugins/index.rst:30
-msgid "Bottle-Memcache"
+msgid "`Macaron <http://nobrin.github.com/macaron/webapp.html>`_"
msgstr ""
#: ../../plugins/index.rst:30
-msgid "Memcache integration for Bottle."
+msgid "Macaron is an object-relational mapper (ORM) for SQLite."
msgstr ""
#: ../../plugins/index.rst:33
-msgid "Bottle-Mongo"
+msgid "`Bottle-Memcache <http://pypi.python.org/pypi/bottle-memcache/>`_"
msgstr ""
#: ../../plugins/index.rst:33
-msgid "MongoDB integration for Bottle"
+msgid "Memcache integration for Bottle."
msgstr ""
#: ../../plugins/index.rst:36
-msgid "Bottle-Redis"
+msgid "`Bottle-Mongo <http://pypi.python.org/pypi/bottle-mongo/>`_"
msgstr ""
#: ../../plugins/index.rst:36
-msgid "Redis integration for Bottle."
+msgid "MongoDB integration for Bottle"
msgstr ""
#: ../../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"
+msgid "Adapter for oauthlib - create your own OAuth2.0 implementation"
msgstr ""
#: ../../plugins/index.rst:42
-msgid "Bottle-Servefiles"
+msgid "`Bottle-Redis <http://pypi.python.org/pypi/bottle-redis/>`_"
msgstr ""
#: ../../plugins/index.rst:42
-msgid "A reusable app that serves static files for bottle apps"
+msgid "Redis integration for Bottle."
msgstr ""
#: ../../plugins/index.rst:45
-msgid "Bottle-Sqlalchemy"
+msgid "`Bottle-Renderer <http://pypi.python.org/pypi/bottle-renderer/>`_"
msgstr ""
#: ../../plugins/index.rst:45
-msgid "SQLAlchemy integration for Bottle."
+msgid "Renderer plugin for bottle"
msgstr ""
#: ../../plugins/index.rst:48
-msgid "Bottle-Sqlite"
+msgid "`Bottle-Servefiles <http://pypi.python.org/pypi/bottle-servefiles/>`_"
msgstr ""
#: ../../plugins/index.rst:48
-msgid "SQLite3 database integration for Bottle."
+msgid "A reusable app that serves static files for bottle apps"
msgstr ""
#: ../../plugins/index.rst:51
-msgid "Bottle-Web2pydal"
+msgid "`Bottle-Sqlalchemy <http://pypi.python.org/pypi/bottle-sqlalchemy/>`_"
msgstr ""
#: ../../plugins/index.rst:51
-msgid "Web2py Dal integration for Bottle."
+msgid "SQLAlchemy integration for Bottle."
msgstr ""
#: ../../plugins/index.rst:54
-msgid "Bottle-Werkzeug"
+msgid "`Bottle-Sqlite <http://pypi.python.org/pypi/bottle-sqlite/>`_"
msgstr ""
#: ../../plugins/index.rst:54
+msgid "SQLite3 database integration for Bottle."
+msgstr ""
+
+#: ../../plugins/index.rst:57
+msgid "`Bottle-Web2pydal <http://pypi.python.org/pypi/bottle-web2pydal/>`_"
+msgstr ""
+
+#: ../../plugins/index.rst:57
+msgid "Web2py Dal integration for Bottle."
+msgstr ""
+
+#: ../../plugins/index.rst:60
+msgid "`Bottle-Werkzeug <http://pypi.python.org/pypi/bottle-werkzeug/>`_"
+msgstr ""
+
+#: ../../plugins/index.rst:60
msgid ""
"Integrates the `werkzeug` library (alternative request and response objects,"
" advanced debugging middleware and more)."
msgstr ""
-#: ../../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/de_DE/LC_MESSAGES/recipes.po b/docs/_locale/de_DE/LC_MESSAGES/recipes.po
index f94fa60..95fda3f 100644
--- a/docs/_locale/de_DE/LC_MESSAGES/recipes.po
+++ b/docs/_locale/de_DE/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:08+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: German (Germany) (http://www.transifex.com/bottle/bottle/language/de_DE/)\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 ""
-#: ../../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/de_DE/LC_MESSAGES/routing.po b/docs/_locale/de_DE/LC_MESSAGES/routing.po
index d622ccc..c02f793 100644
--- a/docs/_locale/de_DE/LC_MESSAGES/routing.po
+++ b/docs/_locale/de_DE/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,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:08+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: German (Germany) (http://www.transifex.com/bottle/bottle/language/de_DE/)\n"
"MIME-Version: 1.0\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/de_DE/LC_MESSAGES/stpl.po b/docs/_locale/de_DE/LC_MESSAGES/stpl.po
index 2d3e5d6..5b80595 100644
--- a/docs/_locale/de_DE/LC_MESSAGES/stpl.po
+++ b/docs/_locale/de_DE/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 21:08+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: German (Germany) (http://www.transifex.com/bottle/bottle/language/de_DE/)\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/de_DE/LC_MESSAGES/tutorial.po b/docs/_locale/de_DE/LC_MESSAGES/tutorial.po
index c63c799..b1ffcbd 100644
--- a/docs/_locale/de_DE/LC_MESSAGES/tutorial.po
+++ b/docs/_locale/de_DE/LC_MESSAGES/tutorial.po
@@ -1,14 +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:
+# Charles LeMagne, 2017
+# Charles LeMagne, 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:08+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: German (Germany) (http://www.transifex.com/bottle/bottle/language/de_DE/)\n"
"MIME-Version: 1.0\n"
@@ -19,7 +21,7 @@ msgstr ""
#: ../../tutorial.rst:24
msgid "Tutorial"
-msgstr ""
+msgstr "Tutorial"
#: ../../tutorial.rst:26
msgid ""
@@ -32,17 +34,17 @@ msgid ""
"you need any help, join our `mailing list "
"<mailto:bottlepy@googlegroups.com>`_ or visit us in our `IRC channel "
"<http://webchat.freenode.net/?channels=bottlepy>`_."
-msgstr ""
+msgstr "Dieses Tutorial führt dich in die Konzepte und Eigenschaften des Bottle Web-Frameworks ein und deckt grundlegende und fortgeschnittene Themenbereiche ab. Du kannst es dir von Anfang bis Ende durchlesen oder später als Referenz nutzen. Die automatisch generierte :doc:`api` könnte dich ebenfalls interessieren. Sie deckt mehr Details ab, erklärt im Gegensatz zu diesem Tutorial aber weniger. Lösungen für die meistgestellten Fragen sind in der :doc:`recipes` Sammlung oder der :doc:`faq` Seite zu finden. Wenn du Hilfe brauchst, tritt unserem Mailverteiler <mailto:bottlepy@googlegroups.com>`_ bei oder besuche unsere IRC-Kanal <http://webchat.freenode.net/?channels=bottlepy>`_."
#: ../../tutorial.rst:31
msgid "Installation"
-msgstr ""
+msgstr "Installation"
#: ../../tutorial.rst:33
msgid ""
"Bottle does not depend on any external libraries. You can just download "
"`bottle.py </bottle.py>`_ into your project directory and start coding:"
-msgstr ""
+msgstr "Bottle hängt von keinerlei externen Bibliotheken ab. Du kannst einfach `bottle.py </bottle.py>`_ in dein Projektverzeichnis herunterladen und anfangen zu coden."
#: ../../tutorial.rst:39
msgid ""
@@ -52,7 +54,7 @@ msgid ""
"<http://pypi.python.org/pypi/bottle>`_ and can be installed via "
":command:`pip` (recommended), :command:`easy_install` or your package "
"manager:"
-msgstr ""
+msgstr "So bekommst du den aktuellsten Entwicklungsschnappschuss, welcher alle neuen Features enthält . Wenn du eine stabilere Umgebung bevorzugst solltest du bei den stabilen Veröffentlichungen bleiben. Diese sind auf `PyPI <http://pypi.python.org/pypi/bottle>`_ verfügbar und können einfach via :command:`pip` (empfohlen), :command:`easy_install` oder deinem Paketmanager installiert werden."
#: ../../tutorial.rst:47
msgid ""
@@ -64,24 +66,24 @@ msgstr ""
#: ../../tutorial.rst:55
msgid "Or, if virtualenv is not installed on your system:"
-msgstr ""
+msgstr "Oder wenn virtualenv nicht auf deinem System installiert ist:"
#: ../../tutorial.rst:67
msgid "Quickstart: \"Hello World\""
-msgstr ""
+msgstr "Schnellstart: \"Hallo Welt\""
#: ../../tutorial.rst:69
msgid ""
"This tutorial assumes you have Bottle either :ref:`installed <installation>`"
" or copied into your project directory. Let's start with a very basic "
"\"Hello World\" example::"
-msgstr ""
+msgstr "Dieses Tutorial setzt voraus dass du entweder :ref:`installiert <installation>` oder in dein Projektverzeichnis kopiert hast.\nLass uns mit einem sehr grundlegenden \"Hallo Welt\" Beispiel starten::"
#: ../../tutorial.rst:79
msgid ""
"This is it. Run this script, visit http://localhost:8080/hello and you will "
"see \"Hello World!\" in your browser. Here is how it works:"
-msgstr ""
+msgstr "Das ist es. Starte dieses Skript, besuche visit http://localhost:8080/hello und du wirst \"Hello World!\" in deinem Browser sehen. Und so funktioniert es:"
#: ../../tutorial.rst:81
msgid ""
@@ -91,7 +93,7 @@ msgid ""
"concept of this framework. You can define as many routes as you want. "
"Whenever a browser requests a URL, the associated function is called and the"
" return value is sent back to the browser. It's as simple as that."
-msgstr ""
+msgstr "Der :func:`route` Dekorator bindet ein stück Code anneinen URL-Pfad.\nIn diesem Fall verlinken wir den ``/hello``-Pfad mit der ``hello()``-Funktion.\nDies wird `route` genannt (daher auch der Dekoratorname) und ist das wichtigste Konzept dieses Frameworks.\nDu kannst so viele Routen definieren wie du willst.\nWann immer ein Browser eine URL anfragt wird die damit verbundene Funktion aufgerufen und die Rückgabe an den Browser gesendet. So einfach ist das."
#: ../../tutorial.rst:83
msgid ""
@@ -101,7 +103,7 @@ msgid ""
"development server is all we need. It requires no setup at all and is an "
"incredibly painless way to get your application up and running for local "
"tests."
-msgstr ""
+msgstr "Der :func:`run` Aufruf in der letzten Zeile startet einen eingebauten Entwicklungsserver. Er läuft auf ``localhost``, Port ``8080`` und bedient Anfragen, bist du :kbd:`Control-c` drückst. Du kannst das Server-Backend später ändern, doch im Augenblick ist dieser Entwicklungsserver alles was wir brauchen. Er benötigt kein Setup und ist ein sehr schmerzfreier Weg um deine Anwendung zum lokalen Testen ans Laufen zu bringen."
#: ../../tutorial.rst:85
msgid ""
@@ -380,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
@@ -413,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
@@ -543,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
@@ -612,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 ""
@@ -659,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 "
@@ -687,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 "
@@ -705,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 "
@@ -713,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 "
@@ -721,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 "
@@ -733,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 "
@@ -759,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 "
@@ -768,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."
@@ -777,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 "
@@ -785,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 "
@@ -797,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 "
@@ -811,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 "
@@ -837,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 "
@@ -850,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 "
@@ -870,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 "
@@ -949,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 "
@@ -965,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 "
@@ -974,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 "
@@ -999,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 "
@@ -1025,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 "
@@ -1033,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 "
@@ -1051,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 "
@@ -1078,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 "
@@ -1086,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 "
@@ -1095,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 "
@@ -1104,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 "
@@ -1116,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. "
@@ -1124,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"
@@ -1139,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 "
@@ -1158,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 "
@@ -1212,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 "
@@ -1226,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 "
@@ -1248,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 "
@@ -1257,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 "
@@ -1286,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 "
@@ -1318,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"
@@ -1334,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 "
@@ -1343,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 "
@@ -1365,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 "
@@ -1419,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 "
@@ -1431,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/de_DE/LC_MESSAGES/tutorial_app.po b/docs/_locale/de_DE/LC_MESSAGES/tutorial_app.po
index 6744a31..da30114 100644
--- a/docs/_locale/de_DE/LC_MESSAGES/tutorial_app.po
+++ b/docs/_locale/de_DE/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 21:08+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: German (Germany) (http://www.transifex.com/bottle/bottle/language/de_DE/)\n"
"MIME-Version: 1.0\n"
@@ -17,17 +17,17 @@ msgstr ""
"Language: de_DE\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 ""