summaryrefslogtreecommitdiff
path: root/docs/_locale/pt_BR/LC_MESSAGES
diff options
context:
space:
mode:
Diffstat (limited to 'docs/_locale/pt_BR/LC_MESSAGES')
-rw-r--r--docs/_locale/pt_BR/LC_MESSAGES/api.po121
-rw-r--r--docs/_locale/pt_BR/LC_MESSAGES/configuration.po34
-rw-r--r--docs/_locale/pt_BR/LC_MESSAGES/deployment.po37
-rw-r--r--docs/_locale/pt_BR/LC_MESSAGES/development.po440
-rw-r--r--docs/_locale/pt_BR/LC_MESSAGES/index.po94
-rw-r--r--docs/_locale/pt_BR/LC_MESSAGES/plugindev.po23
-rw-r--r--docs/_locale/pt_BR/LC_MESSAGES/plugins/index.po182
-rw-r--r--docs/_locale/pt_BR/LC_MESSAGES/recipes.po72
-rw-r--r--docs/_locale/pt_BR/LC_MESSAGES/stpl.po14
-rw-r--r--docs/_locale/pt_BR/LC_MESSAGES/tutorial.po639
-rw-r--r--docs/_locale/pt_BR/LC_MESSAGES/tutorial_app.po499
11 files changed, 1392 insertions, 763 deletions
diff --git a/docs/_locale/pt_BR/LC_MESSAGES/api.po b/docs/_locale/pt_BR/LC_MESSAGES/api.po
index 233751b..b6b864e 100644
--- a/docs/_locale/pt_BR/LC_MESSAGES/api.po
+++ b/docs/_locale/pt_BR/LC_MESSAGES/api.po
@@ -1,7 +1,7 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2009-2015, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
-#
+#
# Translators:
msgid ""
msgstr ""
@@ -136,16 +136,6 @@ msgid ""
"application object. See :func:`load` for the target parameter."
msgstr ""
-# 60c30ba8932547c3a60d1800c94dd5f7
-# 4671fdf2ebd94882bbd784e5ae3cb701
-#: ../../../bottle.pydocstring of bottle.request:1 ../../../bottle.pydocstring
-#: of bottle.request:1
-msgid ""
-"A thread-safe instance of :class:`LocalRequest`. If accessed from within a "
-"request callback, this instance always refers to the *current* request (even"
-" on a multithreaded server)."
-msgstr ""
-
# 872bf1ee18254cc0a6277cc0984e8ce0
#: ../../../bottle.pydocstring of bottle.response:1
msgid ""
@@ -669,23 +659,11 @@ msgid ""
"prefix. Example::"
msgstr ""
-# ea34ccfb3d2542779ad5efcf51306bf2
-#: ../../../bottle.pydocstring of bottle.Bottle.mount:6
-msgid ""
-"path prefix or `mount-point`. If it ends in a slash, that slash is "
-"mandatory."
-msgstr ""
-
# cde929a6d4bb42d6aa8987bee536ea69
-#: ../../../bottle.pydocstring of bottle.Bottle.mount:8
+#: ../../../bottle.pydocstring of bottle.Bottle.mount:7
msgid "an instance of :class:`Bottle` or a WSGI application."
msgstr ""
-# d2230da7b83944f08e4c319e99500a49
-#: ../../../bottle.pydocstring of bottle.Bottle.mount:10
-msgid "All other parameters are passed to the underlying :meth:`route` call."
-msgstr ""
-
# a857bad1f0e64f568190ca94195fa516
#: ../../../bottle.pydocstring of bottle.Bottle.merge:1
msgid ""
@@ -751,12 +729,6 @@ msgstr ""
msgid "A decorator to bind a function to a request URL. Example::"
msgstr ""
-# c2876a4a016f4e6bbebdbd881e5ee946
-#: ../../../bottle.pydocstring of bottle.Bottle.route:7
-msgid ""
-"The ``:name`` part is a wildcard. See :class:`Router` for syntax details."
-msgstr ""
-
# f70c2bea86824b62b40f5cb9b29b2b51
#: ../../../bottle.pydocstring of bottle.Bottle.route:10
msgid ""
@@ -1064,14 +1036,6 @@ msgid ""
"body. The values are instances of :class:`FileUpload`."
msgstr ""
-# 133c3a0b8f5b497abe29c8ffd3bf7636
-#: ../../../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."
-msgstr ""
-
# 5729e49a74ca4056b6c96004e54ef01c
#: ../../../bottle.pydocstring of bottle.BaseRequest.body:1
msgid ""
@@ -1136,11 +1100,6 @@ msgid ""
"script path is returned with leading and tailing slashes."
msgstr ""
-# 541f3baa8331490eb8cfa0c82b984f6c
-#: ../../../bottle.pydocstring of bottle.BaseRequest.path_shift:2
-msgid "Shift path segments from :attr:`path` to :attr:`script_name` and"
-msgstr ""
-
# d25eb7998ea74a1599f0dae0dc366998
#: ../../../bottle.pydocstring of bottle.BaseRequest.path_shift:2
msgid "vice versa."
@@ -1680,3 +1639,79 @@ msgid ""
"To use :class:`MakoTemplate` as your default template engine, just import "
"its specialised decorator and render function::"
msgstr ""
+
+#: ../../../bottle.pydocstring of bottle.request:1 ../../../bottle.pydocstring
+#: of bottle.request:1
+msgid ""
+"A thread-safe instance of :class:`LocalRequest`. If accessed from within a "
+"request callback, this instance always refers to the *current* request (even"
+" on a multi-threaded server)."
+msgstr ""
+
+#: ../../../bottle.pydocstring of bottle.Bottle.mount:6
+msgid "path prefix or `mount-point`."
+msgstr ""
+
+#: ../../../bottle.pydocstring of bottle.Bottle.mount:9
+msgid ""
+"Plugins from the parent application are not applied to the routes of the "
+"mounted child application. If you need plugins in the child application, "
+"install them separately."
+msgstr ""
+
+#: ../../../bottle.pydocstring of bottle.Bottle.mount:13
+msgid ""
+"While it is possible to use path wildcards within the prefix path "
+"(:class:`Bottle` childs only), it is highly discouraged."
+msgstr ""
+
+#: ../../../bottle.pydocstring of bottle.Bottle.mount:16
+msgid ""
+"The prefix path must end with a slash. If you want to access the root of the"
+" child application via `/prefix` in addition to `/prefix/`, consider adding "
+"a route with a 307 redirect to the parent application."
+msgstr ""
+
+#: ../../../bottle.pydocstring of bottle.Bottle.route:7
+msgid ""
+"The ``<name>`` part is a wildcard. See :class:`Router` for syntax details."
+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."
+msgstr ""
+
+#: ../../../bottle.pydocstring of bottle.BaseRequest.path_shift:2
+msgid "Shift path segments from path to script_name and"
+msgstr ""
+
+#~ msgid ""
+#~ "A thread-safe instance of :class:`LocalRequest`. If accessed from within a "
+#~ "request callback, this instance always refers to the *current* request (even"
+#~ " on a multithreaded server)."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "path prefix or `mount-point`. If it ends in a slash, that slash is "
+#~ "mandatory."
+#~ msgstr ""
+
+#~ msgid "All other parameters are passed to the underlying :meth:`route` call."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "The ``:name`` part is a wildcard. See :class:`Router` for syntax details."
+#~ msgstr ""
+
+#~ 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."
+#~ msgstr ""
+
+#~ msgid "Shift path segments from :attr:`path` to :attr:`script_name` and"
+#~ msgstr ""
diff --git a/docs/_locale/pt_BR/LC_MESSAGES/configuration.po b/docs/_locale/pt_BR/LC_MESSAGES/configuration.po
index 1918429..f0dc419 100644
--- a/docs/_locale/pt_BR/LC_MESSAGES/configuration.po
+++ b/docs/_locale/pt_BR/LC_MESSAGES/configuration.po
@@ -1,7 +1,7 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2009-2015, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
-#
+#
# Translators:
msgid ""
msgstr ""
@@ -250,14 +250,32 @@ msgstr ""
msgid "Return the value of a meta field for a key."
msgstr ""
-# 5d9c253ad9254a7fb6e7e2fde5c96511
-#: ../../../bottle.pydocstring of bottle.ConfigDict.meta_set:1
-msgid ""
-"Set the meta field for a key to a new value. This triggers the on-change "
-"handler for existing keys."
-msgstr ""
-
# 6ff07db9d5a04ad1b67e891192c722e6
#: ../../../bottle.pydocstring of bottle.ConfigDict.meta_list:1
msgid "Return an iterable of meta field names defined for a key."
msgstr ""
+
+#: ../../../bottle.pydocstring of bottle.ConfigDict.load_module:1
+msgid ""
+"Load values from a Python module. :param squash: Squash nested dicts into "
+"namespaces by using"
+msgstr ""
+
+#: ../../../bottle.pydocstring of bottle.ConfigDict.load_module:3
+msgid "load_dict(), otherwise use update()"
+msgstr ""
+
+#: ../../../bottle.pydocstring of bottle.ConfigDict.load_module:4
+msgid ""
+"Example: load_config('my.app.settings', True) Example: "
+"load_config('my.app.settings', False)"
+msgstr ""
+
+#: ../../../bottle.pydocstring of bottle.ConfigDict.meta_set:1
+msgid "Set the meta field for a key to a new value."
+msgstr ""
+
+#~ msgid ""
+#~ "Set the meta field for a key to a new value. This triggers the on-change "
+#~ "handler for existing keys."
+#~ msgstr ""
diff --git a/docs/_locale/pt_BR/LC_MESSAGES/deployment.po b/docs/_locale/pt_BR/LC_MESSAGES/deployment.po
index c30a0c9..32f75e5 100644
--- a/docs/_locale/pt_BR/LC_MESSAGES/deployment.po
+++ b/docs/_locale/pt_BR/LC_MESSAGES/deployment.po
@@ -1,7 +1,7 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2009-2015, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
-#
+#
# Translators:
msgid ""
msgstr ""
@@ -436,17 +436,17 @@ msgid "File ``/var/www/yourapp/app.wsgi``::"
msgstr ""
# ecc8b03f39f3420d9ba455c1b13ece1f
-#: ../../deployment.rst:109
+#: ../../deployment.rst:110
msgid "The Apache configuration may look like this::"
msgstr ""
# ee835f1387fa4be69701b4aede11ebf8
-#: ../../deployment.rst:128
+#: ../../deployment.rst:144
msgid "Google AppEngine"
msgstr ""
# d0ee0715d19c4fc991c54b9e328ff0bd
-#: ../../deployment.rst:132
+#: ../../deployment.rst:148
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"
@@ -455,14 +455,14 @@ msgid ""
msgstr ""
# 57dc546c7cf74d9fa80fd96f80a8e70d
-#: ../../deployment.rst:142
+#: ../../deployment.rst:158
msgid ""
"Then you can configure App Engine's ``app.yaml`` to use the ``app`` object "
"like so::"
msgstr ""
# 4cbc7b59b70e4564900fe247fa8d10d7
-#: ../../deployment.rst:153
+#: ../../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 "
@@ -472,7 +472,7 @@ msgid ""
msgstr ""
# ecd80ebf66f843dfa0c2bab351e8546a
-#: ../../deployment.rst:157
+#: ../../deployment.rst:173
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 "
@@ -480,12 +480,12 @@ msgid ""
msgstr ""
# 27d6ad740fd4413596b73bed70cab2d0
-#: ../../deployment.rst:173
+#: ../../deployment.rst:189
msgid "Load Balancer (Manual Setup)"
msgstr ""
# afed46d2164b47b0a254abf40990601c
-#: ../../deployment.rst:175
+#: ../../deployment.rst:191
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 "
@@ -493,7 +493,7 @@ msgid ""
msgstr ""
# 4d5e478b13d44326a19aecea46b89e78
-#: ../../deployment.rst:177
+#: ../../deployment.rst:193
msgid ""
"Instead of a single Bottle application server, you start one instance for "
"each CPU core available using different local port (localhost:8080, 8081, "
@@ -505,37 +505,42 @@ msgid ""
msgstr ""
# e5d495710d6e49459b37dc32606480a5
-#: ../../deployment.rst:179
+#: ../../deployment.rst:195
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 ""
# 0abd9e59e9404392be15c6d60068f4f6
-#: ../../deployment.rst:181
+#: ../../deployment.rst:197
msgid "Pound example::"
msgstr ""
# 0ae649a3b6a64f57a5f306c7aef7cd83
-#: ../../deployment.rst:199
+#: ../../deployment.rst:215
msgid "Apache example::"
msgstr ""
# 72a12c37e6d942f4a30cdbf4d1511a7b
-#: ../../deployment.rst:207
+#: ../../deployment.rst:223
msgid "Lighttpd example::"
msgstr ""
# 6ac39d6e2d534ec4a75316966250ed66
-#: ../../deployment.rst:219
+#: ../../deployment.rst:235
msgid "Good old CGI"
msgstr ""
# ccf4d6681a6844e085d1a35639e2cdc7
-#: ../../deployment.rst:221
+#: ../../deployment.rst:237
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 "
"packages. The `cgi` server adapter does not actually start a CGI server, but"
" transforms your bottle application into a valid CGI application::"
msgstr ""
+
+#: ../../deployment.rst:126
+msgid ""
+"With newer versions of Apache (2.4) use a configuration similar to this::"
+msgstr ""
diff --git a/docs/_locale/pt_BR/LC_MESSAGES/development.po b/docs/_locale/pt_BR/LC_MESSAGES/development.po
new file mode 100644
index 0000000..fcfd4dd
--- /dev/null
+++ b/docs/_locale/pt_BR/LC_MESSAGES/development.po
@@ -0,0 +1,440 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Bottle 0.13-dev\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-12-13 20:54+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../development.rst:2
+msgid "Developer Notes"
+msgstr ""
+
+#: ../../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 ""
+
+#: ../../development.rst:8
+msgid "Get involved"
+msgstr ""
+
+#: ../../development.rst:10
+msgid ""
+"There are several ways to join the community and stay up to date. Here are "
+"some of them:"
+msgstr ""
+
+#: ../../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 ""
+
+#: ../../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 ""
+
+#: ../../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 ""
+
+#: ../../development.rst:15
+msgid ""
+"**Google plus**: We sometimes `blog about Bottle, releases and technical "
+"stuff "
+"<https://plus.google.com/b/104025895326575643538/104025895326575643538/posts>`_"
+" on our Google+ page."
+msgstr ""
+
+#: ../../development.rst:19
+msgid "Get the Sources"
+msgstr ""
+
+#: ../../development.rst:21
+msgid ""
+"The bottle `development repository <https://github.com/bottlepy/bottle>`_ "
+"and the `issue tracker <https://github.com/bottlepy/bottle/issues>`_ are "
+"both hosted at `github <https://github.com/bottlepy/bottle>`_. If you plan "
+"to contribute, it is a good idea to create an account there and fork the "
+"main repository. This way your changes and ideas are visible to other "
+"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 ""
+
+#: ../../development.rst:23
+msgid "**git:** ``git clone git://github.com/bottlepy/bottle.git``"
+msgstr ""
+
+#: ../../development.rst:24
+msgid "**git/https:** ``git clone https://github.com/bottlepy/bottle.git``"
+msgstr ""
+
+#: ../../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 ""
+
+#: ../../development.rst:26
+msgid ""
+"**Translations:** `transifex.com/projects/p/bottle "
+"<https://www.transifex.com/projects/p/bottle/>`_"
+msgstr ""
+
+#: ../../development.rst:30
+msgid "Releases and Updates"
+msgstr ""
+
+#: ../../development.rst:32
+msgid ""
+"Bottle is released at irregular intervals and distributed through `PyPI "
+"<http://pypi.python.org/pypi/bottle>`_. Release candidates and bugfix-"
+"revisions of outdated releases are only available from the git repository "
+"mentioned above. Some Linux distributions may offer packages for outdated "
+"releases, though."
+msgstr ""
+
+#: ../../development.rst:34
+msgid ""
+"The Bottle version number splits into three parts "
+"(**major.minor.revision**). These are *not* used to promote new features but"
+" to indicate important bug-fixes and/or API changes. Critical bugs are fixed"
+" 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 ""
+
+#: ../../development.rst:37
+msgid "Major Release (x.0)"
+msgstr ""
+
+#: ../../development.rst:37
+msgid ""
+"The major release number is increased on important milestones or updates "
+"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 ""
+
+#: ../../development.rst:40
+msgid "Minor Release (x.y)"
+msgstr ""
+
+#: ../../development.rst:40
+msgid ""
+"The minor release number is increased on updates that change the API or "
+"behaviour in some way. You might get some depreciation warnings any may have"
+" to tweak some configuration settings to restore the old behaviour, but in "
+"most cases these changes are designed to be backward compatible for at least"
+" one minor release. You should update to stay up do date, but don't have to."
+" An exception is 0.8, which *will* break backward compatibility hard. (This "
+"is why 0.7 was skipped). Sorry about that."
+msgstr ""
+
+#: ../../development.rst:43
+msgid "Revision (x.y.z)"
+msgstr ""
+
+#: ../../development.rst:43
+msgid ""
+"The revision number is increased on bug-fixes and other patches that do not "
+"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 ""
+
+#: ../../development.rst:47
+msgid "Pre-Release Versions"
+msgstr ""
+
+#: ../../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 ""
+
+#: ../../development.rst:50
+msgid "Repository Structure"
+msgstr ""
+
+#: ../../development.rst:52
+msgid "The source repository is structured as follows:"
+msgstr ""
+
+#: ../../development.rst:55
+msgid "master branch"
+msgstr ""
+
+#: ../../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 ""
+
+#: ../../development.rst:58
+msgid "release-x.y branches"
+msgstr ""
+
+#: ../../development.rst:58
+msgid ""
+"As soon as the master branch is (almost) ready for a new release, it is "
+"branched into a new release branch. This \"release candidate\" is feature-"
+"frozen but may receive bug-fixes and last-minute changes until it is "
+"considered production ready and officially released. From that point on it "
+"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 ""
+
+#: ../../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
+msgid "Feature branches"
+msgstr ""
+
+#: ../../development.rst:64
+msgid ""
+"All other branches are feature branches. These are based on the master "
+"branch and only live as long as they are still active and not merged back "
+"into ``master``."
+msgstr ""
+
+#: ../../development.rst:68
+msgid "What does this mean for a developer?"
+msgstr ""
+
+#: ../../development.rst:69
+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 ""
+
+#: ../../development.rst:71
+msgid ""
+"Oh, and never ever change the release number. We'll do that on integration. "
+"You never know in which order we pull pending requests anyway :)"
+msgstr ""
+
+#: ../../development.rst:75
+msgid "What does this mean for a maintainer ?"
+msgstr ""
+
+#: ../../development.rst:76
+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 ""
+
+#: ../../development.rst:80
+msgid "Submitting Patches"
+msgstr ""
+
+#: ../../development.rst:82
+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, "
+"apply your changes and send a pull-request. Further down this page is a "
+"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 ""
+
+#: ../../development.rst:84
+msgid ""
+"**Documentation:** Tell us what your patch does. Comment your code. If you "
+"introduced a new feature, add to the documentation so others can learn about"
+" it."
+msgstr ""
+
+#: ../../development.rst:85
+msgid ""
+"**Test:** Write tests to prove that your code works as expected and does not"
+" break anything. If you fixed a bug, write at least one test-case that "
+"triggers the bug. Make sure that all tests pass before you submit a patch."
+msgstr ""
+
+#: ../../development.rst:86
+msgid ""
+"**One patch at a time:** Only fix one bug or add one feature at a time. "
+"Design your patches so that they can be applyed as a whole. Keep your "
+"patches clean, small and focused."
+msgstr ""
+
+#: ../../development.rst:87
+msgid ""
+"**Sync with upstream:** If the ``upstream/master`` branch changed while you "
+"were working on your patch, rebase or pull to make sure that your patch "
+"still applies without conflicts."
+msgstr ""
+
+#: ../../development.rst:91
+msgid "Building the Documentation"
+msgstr ""
+
+#: ../../development.rst:93
+msgid ""
+"You need a recent version of Sphinx to build the documentation. The "
+"recommended way is to install :command:`virtualenv` using your distribution "
+"package repository and install sphinx manually to get an up-to-date version."
+msgstr ""
+
+#: ../../development.rst:124
+msgid "GIT Workflow Examples"
+msgstr ""
+
+#: ../../development.rst:126
+msgid ""
+"The following examples assume that you have an (free) `github account "
+"<https://github.com>`_. This is not mandatory, but makes things a lot "
+"easier."
+msgstr ""
+
+#: ../../development.rst:128
+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 ""
+
+#: ../../development.rst:130
+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 ""
+
+#: ../../development.rst:134
+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 ""
+
+#: ../../development.rst:140
+msgid ""
+"Note that \"upstream\" is a public clone URL, which is read-only. You cannot"
+" push changes directly to it. Instead, we will pull from your public "
+"repository. This is described later."
+msgstr ""
+
+#: ../../development.rst:143
+msgid "Submit a Feature"
+msgstr ""
+
+#: ../../development.rst:144
+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 ""
+
+#: ../../development.rst:148
+msgid ""
+"Now implement your feature, write tests, update the documentation, make sure"
+" that all tests pass and commit your changes::"
+msgstr ""
+
+#: ../../development.rst:152
+msgid ""
+"If the ``upstream/master`` branch changed in the meantime, there may be "
+"conflicts with your changes. To solve these, 'rebase' your feature-branch "
+"onto the top of the updated ``upstream/master`` branch::"
+msgstr ""
+
+#: ../../development.rst:157
+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 ""
+
+#: ../../development.rst:159
+msgid ""
+"Now you are almost ready to send a pull request. But first you need to make "
+"your feature-branch public by pushing it to your github fork::"
+msgstr ""
+
+#: ../../development.rst:163
+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 ""
+
+#: ../../development.rst:165
+msgid ""
+"If we accept your patch, we will integrate it into the official development "
+"branch and make it part of the next release."
+msgstr ""
+
+#: ../../development.rst:168
+msgid "Fix a Bug"
+msgstr ""
+
+#: ../../development.rst:169
+msgid ""
+"The workflow for bug-fixes is very similar to the one for features, but "
+"there are some differences:"
+msgstr ""
+
+#: ../../development.rst:171
+msgid ""
+"Branch off of the affected release branches instead of just the development "
+"branch."
+msgstr ""
+
+#: ../../development.rst:172
+msgid "Write at least one test-case that triggers the bug."
+msgstr ""
+
+#: ../../development.rst:173
+msgid ""
+"Do this for each affected branch including ``upstream/master`` if it is "
+"affected. ``git cherry-pick`` may help you reducing repetitive work."
+msgstr ""
+
+#: ../../development.rst:174
+msgid ""
+"Name your branch after the release it is based on to avoid confusion. "
+"Examples: ``my_bugfix-x.y`` or ``my_bugfix-dev``."
+msgstr ""
diff --git a/docs/_locale/pt_BR/LC_MESSAGES/index.po b/docs/_locale/pt_BR/LC_MESSAGES/index.po
index ddcf287..011678f 100644
--- a/docs/_locale/pt_BR/LC_MESSAGES/index.po
+++ b/docs/_locale/pt_BR/LC_MESSAGES/index.po
@@ -1,7 +1,7 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2009-2015, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
-#
+#
# Translators:
# Igor P. Leroy <ip.leroy@gmail.com>, 2015
# Igor P. Leroy <ip.leroy@gmail.com>, 2015
@@ -31,35 +31,47 @@ msgid ""
"Bottle is a fast, simple and lightweight WSGI_ micro web-framework for "
"Python_. It is distributed as a single file module and has no dependencies "
"other than the `Python Standard Library <http://docs.python.org/library/>`_."
-msgstr "Bottle é um simples, rápido, e leve WSGI_ micro web-framework para Python_. Ele é distribuído como um único arquivo (módulo) e não tem dependências que além `Biblioteca padrão do Python <http://docs.python.org/library/>`_."
+msgstr ""
+"Bottle é um simples, rápido, e leve WSGI_ micro web-framework para Python_. "
+"Ele é distribuído como um único arquivo (módulo) e não tem dependências que "
+"além `Biblioteca padrão do Python <http://docs.python.org/library/>`_."
# b6844ef5791d4078aa0cf29cb8bb61f1
#: ../../index.rst:26
msgid ""
"**Routing:** Requests to function-call mapping with support for clean and "
"dynamic URLs."
-msgstr "**Rotas:** Solicitações de chamada de função de mapeamento com suporte para URLs limpas e dinâmicos."
+msgstr ""
+"**Rotas:** Solicitações de chamada de função de mapeamento com suporte para "
+"URLs limpas e dinâmicos."
# a9d6920f0aa84da4aebfa670d7866148
#: ../../index.rst:27
msgid ""
"**Templates:** Fast and pythonic :ref:`built-in template engine <tutorial-"
"templates>` and support for mako_, jinja2_ and cheetah_ templates."
-msgstr "**Templates:**Rápido e pythonico :ref:`mecanismo de templates interno <tutorial-templates>` e suporte para mako_, jinja2_ and cheetah_ templates."
+msgstr ""
+"**Templates:**Rápido e pythonico :ref:`mecanismo de templates interno "
+"<tutorial-templates>` e suporte para mako_, jinja2_ and cheetah_ templates."
# 423eb0affb034262807cb405a4c71eed
#: ../../index.rst:28
msgid ""
"**Utilities:** Convenient access to form data, file uploads, cookies, "
"headers and other HTTP-related metadata."
-msgstr "**Utilitários:** Conveniente acesso a dados de formulários, upload de arquivos, cookies, cabeçalhos e outros metadados relacionados ao HTTP."
+msgstr ""
+"**Utilitários:** Conveniente acesso a dados de formulários, upload de "
+"arquivos, cookies, cabeçalhos e outros metadados relacionados ao HTTP."
# c41e00ea23f6494c8dc7d19fba421e3e
#: ../../index.rst:29
msgid ""
"**Server:** Built-in HTTP development server and support for paste_, "
"fapws3_, bjoern_, gae_, cherrypy_ or any other WSGI_ capable HTTP server."
-msgstr "**Servidor:** Servidor HTTP interno para desenvolvimento e suporte para paste_, fapws3_, bjoern_, gae_, cherrypy_ ou qualquer outro WSGI_ capaz de servir HTTP"
+msgstr ""
+"**Servidor:** Servidor HTTP interno para desenvolvimento e suporte para "
+"paste_, fapws3_, bjoern_, gae_, cherrypy_ ou qualquer outro WSGI_ capaz de "
+"servir HTTP"
# 8610ec4b00334540a0532ca71e75b798
#: ../../index.rst:32
@@ -71,22 +83,15 @@ msgstr "Exemplo: \"Olá Mundo\" em bottle"
msgid ""
"Run this script or paste it into a Python console, then point your browser "
"to `<http://localhost:8080/hello/world>`_. That's it."
-msgstr "Execute este script ou cole em um console de Python, em seguida, acesse em seu navegador o `<http://localhost:8080/hello/world>`_. Feito!"
+msgstr ""
+"Execute este script ou cole em um console de Python, em seguida, acesse em "
+"seu navegador o `<http://localhost:8080/hello/world>`_. Feito!"
# 94e31bb38fa0488db628ff6917e262d1
#: ../../index.rst:46
msgid "Download and Install"
msgstr "Download e Instalar"
-# 6f0fb8d8aa4149cf8266564d1e5a726c
-#: ../../index.rst:49
-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.5+ and 3.x**."
-msgstr "Instalar a última versão estável com ``pip install bottle``, ``easy_install -U bottle` ou download `bottle.py`__ (instável) no diretório do seu projeto. Não há [1]_ dependências que não seja a biblioteca padrão do Python. Bottle roda com **Python 2.5+ e 3.x**."
-
# 2715c1f5010a422491b756c32f592151
#: ../../index.rst:52
msgid "User's Guide"
@@ -98,7 +103,11 @@ msgid ""
"Start here if you want to learn how to use the bottle framework for web "
"development. If you have any questions not answered here, feel free to ask "
"the `mailing list <mailto:bottlepy@googlegroups.com>`_."
-msgstr "Comece por aqui se você quer aprender como usar o bottle framework para desenvolvimento web. Se você tiver quaisquer perguntas não respondidas aqui, sinta-se livre para pedir ajuda a `lista de discussão <mailto:bottlepy@googlegroups.com>`_."
+msgstr ""
+"Comece por aqui se você quer aprender como usar o bottle framework para "
+"desenvolvimento web. Se você tiver quaisquer perguntas não respondidas aqui,"
+" sinta-se livre para pedir ajuda a `lista de discussão "
+"<mailto:bottlepy@googlegroups.com>`_."
# 698edeb049d247fdad38d28979c62337
#: ../../index.rst:68
@@ -120,7 +129,9 @@ msgstr "Desenvolvimento e contribuição"
msgid ""
"These chapters are intended for developers interested in the bottle "
"development and release workflow."
-msgstr "Esses capítulos são destinados a desenvolvedores interessados no desenvolvimento do bottle e entender o fluxo de contribuição."
+msgstr ""
+"Esses capítulos são destinados a desenvolvedores interessados no "
+"desenvolvimento do bottle e entender o fluxo de contribuição."
# ca23960c01034976b70fd71c71973820
#: ../../index.rst:100
@@ -138,16 +149,53 @@ msgid ""
"The Bottle logo however is *NOT* covered by that license. It is allowed to "
"use the logo as a link to the bottle homepage or in direct context with the "
"unmodified library. In all other cases please ask first."
-msgstr "O logotipo do bottle no entanto *NÃO é* abrangido pela licença (MIT). É permitido usar o logotipo como um link para a home page do bottle ou em contexto direto com a biblioteca não modificado. Nos outros casos, por favor, pergunte primeiro."
+msgstr ""
+"O logotipo do bottle no entanto *NÃO é* abrangido pela licença (MIT). É "
+"permitido usar o logotipo como um link para a home page do bottle ou em "
+"contexto direto com a biblioteca não modificado. Nos outros casos, por "
+"favor, pergunte primeiro."
# a44f6cf5314649f783ad42251830b7ff
#: ../../index.rst:112
msgid "Footnotes"
msgstr "Notas de rodapé"
-# 80dde7a59606456fa33a3eba8bc0af2e
+#: ../../index.rst:49
+#, fuzzy
+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.6+ and 3.2+**."
+msgstr ""
+"Instalar a última versão estável com ``pip install bottle``, ``easy_install "
+"-U bottle` ou download `bottle.py`__ (instável) no diretório do seu projeto."
+" Não há [1]_ dependências que não seja a biblioteca padrão do Python. Bottle"
+" roda com **Python 2.5+ e 3.x**."
+
#: ../../index.rst:113
+#, fuzzy
msgid ""
-"Usage of the template or server adapter classes of course requires the "
-"corresponding template or server modules."
-msgstr "O uso do template ou as classes de adaptador dos servidores requerem o template ou módulos dos servidores correspondentes."
+"Usage of the template or server adapter classes requires the corresponding "
+"template or server modules."
+msgstr ""
+"O uso do template ou as classes de adaptador dos servidores requerem o "
+"template ou módulos dos servidores correspondentes."
+
+#~ 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.5+ and 3.x**."
+#~ msgstr ""
+#~ "Instalar a última versão estável com ``pip install bottle``, ``easy_install "
+#~ "-U bottle` ou download `bottle.py`__ (instável) no diretório do seu projeto."
+#~ " Não há [1]_ dependências que não seja a biblioteca padrão do Python. Bottle"
+#~ " roda com **Python 2.5+ e 3.x**."
+
+#~ msgid ""
+#~ "Usage of the template or server adapter classes of course requires the "
+#~ "corresponding template or server modules."
+#~ msgstr ""
+#~ "O uso do template ou as classes de adaptador dos servidores requerem o "
+#~ "template ou módulos dos servidores correspondentes."
diff --git a/docs/_locale/pt_BR/LC_MESSAGES/plugindev.po b/docs/_locale/pt_BR/LC_MESSAGES/plugindev.po
index a97bd2c..416b278 100644
--- a/docs/_locale/pt_BR/LC_MESSAGES/plugindev.po
+++ b/docs/_locale/pt_BR/LC_MESSAGES/plugindev.po
@@ -1,7 +1,7 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2009-2015, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
-#
+#
# Translators:
msgid ""
msgstr ""
@@ -54,14 +54,6 @@ msgid ""
"application."
msgstr ""
-# 25cfdadfbfc54e47ae7b2f75ce1aeaf9
-#: ../../plugindev.rst:20
-msgid ""
-"Of course, this is just a simplification. Plugins can do a lot more than "
-"just decorating route callbacks, but it is a good starting point. Lets have "
-"a look at some code::"
-msgstr ""
-
# 27708e12ba14412cb4719108df66afa9
#: ../../plugindev.rst:36
msgid ""
@@ -454,3 +446,16 @@ msgid ""
"This way the argument is not overruled by the plugin and still contains the "
"value of the same-named url argument."
msgstr ""
+
+#: ../../plugindev.rst:20
+msgid ""
+"This is just a simplification. Plugins can do a lot more than just "
+"decorating route callbacks, but it is a good starting point. Lets have a "
+"look at some code::"
+msgstr ""
+
+#~ msgid ""
+#~ "Of course, this is just a simplification. Plugins can do a lot more than "
+#~ "just decorating route callbacks, but it is a good starting point. Lets have "
+#~ "a look at some code::"
+#~ msgstr ""
diff --git a/docs/_locale/pt_BR/LC_MESSAGES/plugins/index.po b/docs/_locale/pt_BR/LC_MESSAGES/plugins/index.po
index f33b82c..47939b8 100644
--- a/docs/_locale/pt_BR/LC_MESSAGES/plugins/index.po
+++ b/docs/_locale/pt_BR/LC_MESSAGES/plugins/index.po
@@ -1,7 +1,7 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2009-2015, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
-#
+#
# Translators:
msgid ""
msgstr ""
@@ -37,21 +37,11 @@ msgid ""
":doc:`/plugindev` may help you."
msgstr ""
-# 310905cd02d1454c93b15ebfa6162f05
-#: ../../plugins/index.rst:12
-msgid "`Bottle-Beaker <http://pypi.python.org/pypi/bottle-beaker/>`_"
-msgstr ""
-
# d8ed078cbb8142db8027885e6c8e5644
#: ../../plugins/index.rst:12
msgid "Beaker to session and caching library with WSGI Middleware"
msgstr ""
-# 401c231e9f07456796d74d968e70ea93
-#: ../../plugins/index.rst:15
-msgid "`Bottle-Cork <http://cork.firelet.net/>`_"
-msgstr ""
-
# 023e0b7bc19e4494ac819b5cf344b9fd
#: ../../plugins/index.rst:15
msgid ""
@@ -59,131 +49,66 @@ msgid ""
"Authorization in web applications based on Bottle."
msgstr ""
-# 7c88efc9de61464da5adcfd9c2e80ec4
-#: ../../plugins/index.rst:18
-msgid "`Bottle-Extras <http://pypi.python.org/pypi/bottle-extras/>`_"
-msgstr ""
-
# a5735468ec8b4c89a8a99f3e014f3c9b
#: ../../plugins/index.rst:18
msgid "Meta package to install the bottle plugin collection."
msgstr ""
-# 5923bcda580f4c769d070b6d0f27641f
-#: ../../plugins/index.rst:21
-msgid "`Bottle-Flash <http://pypi.python.org/pypi/bottle-flash/>`_"
-msgstr ""
-
# 792df86f7f0440a0b9200ad73331a703
#: ../../plugins/index.rst:21
msgid "flash plugin for bottle"
msgstr ""
-# 9e61cdc471f24b8d996952f68b8c8878
-#: ../../plugins/index.rst:24
-msgid "`Bottle-Hotqueue <http://pypi.python.org/pypi/bottle-hotqueue/>`_"
-msgstr ""
-
# 1af2300151374bc2a018ac9cbb3689cf
#: ../../plugins/index.rst:24
msgid "FIFO Queue for Bottle built upon redis"
msgstr ""
-# 46b0947914b843e6b2ec818cdfd8194c
-#: ../../plugins/index.rst:27
-msgid "`Macaron <http://nobrin.github.com/macaron/webapp.html>`_"
-msgstr ""
-
# 86615d4370cb40eba2baae5c07c7cf90
#: ../../plugins/index.rst:27
msgid "Macaron is an object-relational mapper (ORM) for SQLite."
msgstr ""
-# 9068f5374d88411080ee26f46af5309e
-#: ../../plugins/index.rst:30
-msgid "`Bottle-Memcache <http://pypi.python.org/pypi/bottle-memcache/>`_"
-msgstr ""
-
# 644b19d66de8490aa581c3341c085be8
#: ../../plugins/index.rst:30
msgid "Memcache integration for Bottle."
msgstr ""
-# deb110a275ef414bae145d9f2a63cc52
-#: ../../plugins/index.rst:33
-msgid "`Bottle-Mongo <http://pypi.python.org/pypi/bottle-mongo/>`_"
-msgstr ""
-
# 9e0f2c737eb14c13869d9769248261f4
#: ../../plugins/index.rst:33
msgid "MongoDB integration for Bottle"
msgstr ""
-# 888f294e997246208ae964ed00a913e7
-#: ../../plugins/index.rst:36
-msgid "`Bottle-Redis <http://pypi.python.org/pypi/bottle-redis/>`_"
-msgstr ""
-
# f56c13b1ef4441778ed6e5cbed43ee93
#: ../../plugins/index.rst:36
msgid "Redis integration for Bottle."
msgstr ""
-# 38ddf6190b4d44e08fbd0e44cfcd3807
-#: ../../plugins/index.rst:39
-msgid "`Bottle-Renderer <http://pypi.python.org/pypi/bottle-renderer/>`_"
-msgstr ""
-
# a0e8210860a14abaa36d1fd06b2dd85f
#: ../../plugins/index.rst:39
msgid "Renderer plugin for bottle"
msgstr ""
-# 8066c6cfc6d44356a120e878f5dc22dd
-#: ../../plugins/index.rst:42
-msgid "`Bottle-Servefiles <http://pypi.python.org/pypi/bottle-servefiles/>`_"
-msgstr ""
-
# cef5eeed3b86452faa0e502e525957b5
#: ../../plugins/index.rst:42
msgid "A reusable app that serves static files for bottle apps"
msgstr ""
-# b075ceee7eac47eeb8cc5432277a74a3
-#: ../../plugins/index.rst:45
-msgid "`Bottle-Sqlalchemy <http://pypi.python.org/pypi/bottle-sqlalchemy/>`_"
-msgstr ""
-
# 912c1aaa7cb049e39b6fc132d9514e34
#: ../../plugins/index.rst:45
msgid "SQLAlchemy integration for Bottle."
msgstr ""
-# f926fab7bceb444ea42fb3f8a2e524c8
-#: ../../plugins/index.rst:48
-msgid "`Bottle-Sqlite <http://pypi.python.org/pypi/bottle-sqlite/>`_"
-msgstr ""
-
# 7404a2a0a17d4717bb8758e0c9b79420
#: ../../plugins/index.rst:48
msgid "SQLite3 database integration for Bottle."
msgstr ""
-# 62faa0679f43409e82791f3d3816ee54
-#: ../../plugins/index.rst:51
-msgid "`Bottle-Web2pydal <http://pypi.python.org/pypi/bottle-web2pydal/>`_"
-msgstr ""
-
# 1f0769e936d54ddab43ed553b5cf4b7f
#: ../../plugins/index.rst:51
msgid "Web2py Dal integration for Bottle."
msgstr ""
-# bbad81741d54479aaa2bfbd9aa4f4055
-#: ../../plugins/index.rst:54
-msgid "`Bottle-Werkzeug <http://pypi.python.org/pypi/bottle-werkzeug/>`_"
-msgstr ""
-
# 43cd0c19d20b4ed09758a6514026e54b
#: ../../plugins/index.rst:54
msgid ""
@@ -197,3 +122,108 @@ msgid ""
"Plugins listed here are not part of Bottle or the Bottle project, but "
"developed and maintained by third parties."
msgstr ""
+
+#: ../../plugins/index.rst:12
+msgid "Bottle-Beaker"
+msgstr ""
+
+#: ../../plugins/index.rst:15
+msgid "Bottle-Cork"
+msgstr ""
+
+#: ../../plugins/index.rst:18
+msgid "Bottle-Extras"
+msgstr ""
+
+#: ../../plugins/index.rst:21
+msgid "Bottle-Flash"
+msgstr ""
+
+#: ../../plugins/index.rst:24
+msgid "Bottle-Hotqueue"
+msgstr ""
+
+#: ../../plugins/index.rst:27
+msgid "Macaron"
+msgstr ""
+
+#: ../../plugins/index.rst:30
+msgid "Bottle-Memcache"
+msgstr ""
+
+#: ../../plugins/index.rst:33
+msgid "Bottle-Mongo"
+msgstr ""
+
+#: ../../plugins/index.rst:36
+msgid "Bottle-Redis"
+msgstr ""
+
+#: ../../plugins/index.rst:39
+msgid "Bottle-Renderer"
+msgstr ""
+
+#: ../../plugins/index.rst:42
+msgid "Bottle-Servefiles"
+msgstr ""
+
+#: ../../plugins/index.rst:45
+msgid "Bottle-Sqlalchemy"
+msgstr ""
+
+#: ../../plugins/index.rst:48
+msgid "Bottle-Sqlite"
+msgstr ""
+
+#: ../../plugins/index.rst:51
+msgid "Bottle-Web2pydal"
+msgstr ""
+
+#: ../../plugins/index.rst:54
+msgid "Bottle-Werkzeug"
+msgstr ""
+
+#~ msgid "`Bottle-Beaker <http://pypi.python.org/pypi/bottle-beaker/>`_"
+#~ msgstr ""
+
+#~ msgid "`Bottle-Cork <http://cork.firelet.net/>`_"
+#~ msgstr ""
+
+#~ msgid "`Bottle-Extras <http://pypi.python.org/pypi/bottle-extras/>`_"
+#~ msgstr ""
+
+#~ msgid "`Bottle-Flash <http://pypi.python.org/pypi/bottle-flash/>`_"
+#~ msgstr ""
+
+#~ msgid "`Bottle-Hotqueue <http://pypi.python.org/pypi/bottle-hotqueue/>`_"
+#~ msgstr ""
+
+#~ msgid "`Macaron <http://nobrin.github.com/macaron/webapp.html>`_"
+#~ msgstr ""
+
+#~ msgid "`Bottle-Memcache <http://pypi.python.org/pypi/bottle-memcache/>`_"
+#~ msgstr ""
+
+#~ msgid "`Bottle-Mongo <http://pypi.python.org/pypi/bottle-mongo/>`_"
+#~ msgstr ""
+
+#~ msgid "`Bottle-Redis <http://pypi.python.org/pypi/bottle-redis/>`_"
+#~ msgstr ""
+
+#~ msgid "`Bottle-Renderer <http://pypi.python.org/pypi/bottle-renderer/>`_"
+#~ msgstr ""
+
+#~ msgid "`Bottle-Servefiles <http://pypi.python.org/pypi/bottle-servefiles/>`_"
+#~ msgstr ""
+
+#~ msgid "`Bottle-Sqlalchemy <http://pypi.python.org/pypi/bottle-sqlalchemy/>`_"
+#~ msgstr ""
+
+#~ msgid "`Bottle-Sqlite <http://pypi.python.org/pypi/bottle-sqlite/>`_"
+#~ msgstr ""
+
+#~ msgid "`Bottle-Web2pydal <http://pypi.python.org/pypi/bottle-web2pydal/>`_"
+#~ msgstr ""
+
+#~ msgid "`Bottle-Werkzeug <http://pypi.python.org/pypi/bottle-werkzeug/>`_"
+#~ msgstr ""
diff --git a/docs/_locale/pt_BR/LC_MESSAGES/recipes.po b/docs/_locale/pt_BR/LC_MESSAGES/recipes.po
index 38e64ba..c43d0fe 100644
--- a/docs/_locale/pt_BR/LC_MESSAGES/recipes.po
+++ b/docs/_locale/pt_BR/LC_MESSAGES/recipes.po
@@ -1,7 +1,7 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2009-2015, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
-#
+#
# Translators:
msgid ""
msgstr ""
@@ -157,33 +157,28 @@ msgid ""
" treat both URLs the same you can add two ``@route`` decorators::"
msgstr ""
-# e4f054d6e05148adb27c54ddcef61aa7
-#: ../../recipes.rst:142
-msgid "or add a WSGI middleware that strips trailing slashes from all URLs::"
-msgstr ""
-
# 1ed4f054f22a4ac79ec3d47ad65a1708
-#: ../../recipes.rst:156
+#: ../../recipes.rst:162
msgid "Footnotes"
msgstr ""
# 62e7f6b0c3434eb89f130688da977f15
-#: ../../recipes.rst:157
+#: ../../recipes.rst:163
msgid "Because they are. See <http://www.ietf.org/rfc/rfc3986.txt>"
msgstr ""
# 41064858a8dc49c68eb43fa917bddd43
-#: ../../recipes.rst:161
+#: ../../recipes.rst:167
msgid "Keep-alive requests"
msgstr ""
# 952f277371514a0c989a7301e0f96c12
-#: ../../recipes.rst:165
+#: ../../recipes.rst:171
msgid "For a more detailed explanation, see :doc:`async`."
msgstr ""
# da9e6dddd8b543799423af1561cab613
-#: ../../recipes.rst:167
+#: ../../recipes.rst:173
msgid ""
"Several \"push\" mechanisms like XHR multipart need the ability to write "
"response data without closing the connection in conjunction with the "
@@ -196,7 +191,7 @@ msgid ""
msgstr ""
# 48e6abce73f34c21bae196f63ec86a4a
-#: ../../recipes.rst:184
+#: ../../recipes.rst:190
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 "
@@ -204,17 +199,17 @@ msgid ""
msgstr ""
# e0a4b2c194754d18b665c49f859caf4f
-#: ../../recipes.rst:187
+#: ../../recipes.rst:193
msgid "Gzip Compression in Bottle"
msgstr ""
# 49f80fef30d9495ba02ec60f7d417821
-#: ../../recipes.rst:190
+#: ../../recipes.rst:196
msgid "For a detailed discussion, see compression_"
msgstr ""
# ab6e0ad26e0e43248ecf6bf63a09ac37
-#: ../../recipes.rst:192
+#: ../../recipes.rst:198
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) "
@@ -222,7 +217,7 @@ msgid ""
msgstr ""
# ea4b850a16d845c9b35384770c7f7c03
-#: ../../recipes.rst:194
+#: ../../recipes.rst:200
msgid ""
"Supporting Gzip compression is not a straightforward proposition, due to a "
"number of corner cases that crop up frequently. A proper Gzip implementation"
@@ -230,54 +225,54 @@ msgid ""
msgstr ""
# 7b6cbef81a9f413089f7025fd2c2779f
-#: ../../recipes.rst:196
+#: ../../recipes.rst:202
msgid "Compress on the fly and be fast doing so."
msgstr ""
# d9a5a2336fb34d0fa4e68c2a3bb26eac
-#: ../../recipes.rst:197
+#: ../../recipes.rst:203
msgid "Do not compress for browsers that don't support it."
msgstr ""
# 65d79afcf2d248a4b048060302b593e4
-#: ../../recipes.rst:198
+#: ../../recipes.rst:204
msgid "Do not compress files that are compressed already (images, videos)."
msgstr ""
# 103aa5633aab49c98defd178f3b8419a
-#: ../../recipes.rst:199
+#: ../../recipes.rst:205
msgid "Do not compress dynamic files."
msgstr ""
# 5df651510f31452ba7bb46f2cacb08b5
-#: ../../recipes.rst:200
+#: ../../recipes.rst:206
msgid "Support two differed compression algorithms (gzip and deflate)."
msgstr ""
# 8828f21fbd9749868425dd18767e03a4
-#: ../../recipes.rst:201
+#: ../../recipes.rst:207
msgid "Cache compressed files that don't change often."
msgstr ""
# 14590c3194a4466ea72e1d4a54622164
-#: ../../recipes.rst:202
+#: ../../recipes.rst:208
msgid "De-validate the cache if one of the files changed anyway."
msgstr ""
# c86800c8df5341bfa2f6031182597bcb
-#: ../../recipes.rst:203
+#: ../../recipes.rst:209
msgid "Make sure the cache does not get to big."
msgstr ""
# e083757d1ff74523985760815f6ce4c0
-#: ../../recipes.rst:204
+#: ../../recipes.rst:210
msgid ""
"Do not cache small files because a disk seek would take longer than on-the-"
"fly compression."
msgstr ""
# 20f755960a744915995b2b163f42f4c9
-#: ../../recipes.rst:206
+#: ../../recipes.rst:212
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"
@@ -286,12 +281,12 @@ msgid ""
msgstr ""
# fe52ccf19e01458ba2c987709dd29eda
-#: ../../recipes.rst:210
+#: ../../recipes.rst:216
msgid "Using the hooks plugin"
msgstr ""
# 08bc14b1cfc3417fa218d3b26dcfac52
-#: ../../recipes.rst:212
+#: ../../recipes.rst:218
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 "
@@ -299,26 +294,26 @@ msgid ""
msgstr ""
# 899b3bcef9bc422a8c305d51e4a58c90
-#: ../../recipes.rst:230
+#: ../../recipes.rst:236
msgid ""
"You can also use the ``before_request`` to take an action before every "
"function gets called."
msgstr ""
# b08bf3a9f25646cc9324f70239238d88
-#: ../../recipes.rst:235
+#: ../../recipes.rst:241
msgid "Using Bottle with Heroku"
msgstr ""
# a06da0ff39b64d37bc06d241c0b78f5d
-#: ../../recipes.rst:237
+#: ../../recipes.rst:243
msgid ""
"Heroku_, a popular cloud application platform now provides support for "
"running Python applications on their infastructure."
msgstr ""
# c34c5372a3a44a0198b3cf71432daf9c
-#: ../../recipes.rst:240
+#: ../../recipes.rst:246
msgid ""
"This recipe is based upon the `Heroku Quickstart "
"<http://devcenter.heroku.com/articles/quickstart>`_, with Bottle specific "
@@ -329,8 +324,19 @@ msgid ""
msgstr ""
# afba5ebd9fd34dc2864557520d73a4a1
-#: ../../recipes.rst:256
+#: ../../recipes.rst:262
msgid ""
"Heroku's app stack passes the port that the application needs to listen on "
"for requests, using the `os.environ` dictionary."
msgstr ""
+
+#: ../../recipes.rst:142
+msgid "add a WSGI middleware that strips trailing slashes from all URLs::"
+msgstr ""
+
+#: ../../recipes.rst:155
+msgid "or add a ``before_request`` hook to strip the trailing slashes::"
+msgstr ""
+
+#~ msgid "or add a WSGI middleware that strips trailing slashes from all URLs::"
+#~ msgstr ""
diff --git a/docs/_locale/pt_BR/LC_MESSAGES/stpl.po b/docs/_locale/pt_BR/LC_MESSAGES/stpl.po
index 68fc65e..1a9e55a 100644
--- a/docs/_locale/pt_BR/LC_MESSAGES/stpl.po
+++ b/docs/_locale/pt_BR/LC_MESSAGES/stpl.po
@@ -1,7 +1,7 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2009-2015, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
-#
+#
# Translators:
msgid ""
msgstr ""
@@ -192,11 +192,6 @@ msgid ""
" of a code segment, end the text line with a double-backslash::"
msgstr ""
-# 0a8c68359c0f46229baa5bf89cea417c
-#: ../../stpl.rst:123
-msgid "THis time the rendered template looks like this::"
-msgstr ""
-
# 2a97642550b64e8298aeadbb2ee4030b
#: ../../stpl.rst:127
msgid ""
@@ -294,3 +289,10 @@ msgstr ""
#: ../../../bottle.pydocstring of bottle.SimpleTemplate.render:1
msgid "Render the template using keyword arguments as local variables."
msgstr ""
+
+#: ../../stpl.rst:123
+msgid "This time the rendered template looks like this::"
+msgstr ""
+
+#~ msgid "THis time the rendered template looks like this::"
+#~ msgstr ""
diff --git a/docs/_locale/pt_BR/LC_MESSAGES/tutorial.po b/docs/_locale/pt_BR/LC_MESSAGES/tutorial.po
index 9505d5c..a5cf32a 100644
--- a/docs/_locale/pt_BR/LC_MESSAGES/tutorial.po
+++ b/docs/_locale/pt_BR/LC_MESSAGES/tutorial.po
@@ -1,7 +1,7 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2009-2015, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
-#
+#
# Translators:
msgid ""
msgstr ""
@@ -59,15 +59,6 @@ msgid ""
"manager:"
msgstr ""
-# 6370b74c81174ef7b73564ca52e77f30
-#: ../../tutorial.rst:47
-msgid ""
-"Either way, you'll need Python 2.5 or newer (including 3.x) to run bottle "
-"applications. If you do not have permissions to install packages system-wide"
-" or simply don't want to, create a `virtualenv "
-"<http://pypi.python.org/pypi/virtualenv>`_ first:"
-msgstr ""
-
# 231776fdacc64529a13944d3994fe4c4
#: ../../tutorial.rst:55
msgid "Or, if virtualenv is not installed on your system:"
@@ -122,14 +113,6 @@ msgid ""
"should be switched off for public applications. Keep that in mind."
msgstr ""
-# a5019875879b47689a401f7267240e8c
-#: ../../tutorial.rst:87
-msgid ""
-"Of course this is a very simple example, but it shows the basic concept of "
-"how applications are built with Bottle. Continue reading and you'll see what"
-" else is possible."
-msgstr ""
-
# e837dae88a164a05bc74f0601c582444
#: ../../tutorial.rst:92
msgid "The Default Application"
@@ -210,147 +193,61 @@ msgid ""
"along with the URLs they'd match::"
msgstr ""
-# a5c653d0a2584d829ca0b004a096659d
-#: ../../tutorial.rst:152
-msgid ""
-"Filters are used to define more specific wildcards, and/or transform the "
-"covered part of the URL before it is passed to the callback. A filtered "
-"wildcard is declared as ``<name:filter>`` or ``<name:filter:config>``. The "
-"syntax for the optional config part depends on the filter used."
-msgstr ""
-
# e9b34bc84c024ac284534285631c6310
-#: ../../tutorial.rst:154
+#: ../../tutorial.rst:152
msgid ""
"The following filters are implemented by default and more may be added:"
msgstr ""
# bf08294f4c7c4bd1908c4c376f9aada9
-#: ../../tutorial.rst:156
+#: ../../tutorial.rst:154
msgid ""
"**:int** matches (signed) digits only and converts the value to integer."
msgstr ""
# 74e3fee4663b41599cd01c95499c7f0f
-#: ../../tutorial.rst:157
+#: ../../tutorial.rst:155
msgid "**:float** similar to :int but for decimal numbers."
msgstr ""
# 9968ec2829bc43e9a604f8dd2775e82d
-#: ../../tutorial.rst:158
+#: ../../tutorial.rst:156
msgid ""
"**:path** matches all characters including the slash character in a non-"
"greedy way and can be used to match more than one path segment."
msgstr ""
# c7c58c9cd1804ef19f7fb4e6909d5314
-#: ../../tutorial.rst:159
+#: ../../tutorial.rst:157
msgid ""
"**:re** allows you to specify a custom regular expression in the config "
"field. The matched value is not modified."
msgstr ""
# d1664b21f95640b9b7848224150a1c2a
-#: ../../tutorial.rst:161
+#: ../../tutorial.rst:159
msgid "Let's have a look at some practical examples::"
msgstr ""
# e2c015426d62427b8baf07a6dca84c98
-#: ../../tutorial.rst:175
+#: ../../tutorial.rst:173
msgid "You can add your own filters as well. See :doc:`routing` for details."
msgstr ""
-# dce499c468e547689f8f1f76fa72fb79
-#: ../../tutorial.rst:179
-msgid ""
-"The new rule syntax was introduced in **Bottle 0.10** to simplify some "
-"common use cases, but the old syntax still works and you can find a lot of "
-"code examples still using it. The differences are best described by example:"
-msgstr ""
-
-# 4fdcb0127e6743288e7c1d6b6165107d
-#: ../../tutorial.rst:182
-msgid "Old Syntax"
-msgstr ""
-
-# bb8641cc26f2463f8c616a4b7642c861
-#: ../../tutorial.rst:182
-msgid "New Syntax"
-msgstr ""
-
-# 7c941561a45c4970b776e5f84f5a366e
-#: ../../tutorial.rst:184
-msgid "``:name``"
-msgstr ""
-
-# 0627940e3f3242afa41e781fa4713a85
-#: ../../tutorial.rst:184
-msgid "``<name>``"
-msgstr ""
-
-# d6e36ed6f0004129b81ec00a06259588
-#: ../../tutorial.rst:185
-msgid "``:name#regexp#``"
-msgstr ""
-
-# f141cc72cbaa4d3289dcde6e261fd516
-#: ../../tutorial.rst:185
-msgid "``<name:re:regexp>``"
-msgstr ""
-
-# dd11228910bb40bb800f000ab651c362
-#: ../../tutorial.rst:186
-msgid "``:#regexp#``"
-msgstr ""
-
-# 6856882d9711448e8a8b209229571aef
-#: ../../tutorial.rst:186
-msgid "``<:re:regexp>``"
-msgstr ""
-
-# 743f807f038d405ebd72fafc986ea77a
-#: ../../tutorial.rst:187
-msgid "``:##``"
-msgstr ""
-
-# 696dc779cccf40deb80bb15f28de0847
-#: ../../tutorial.rst:187
-msgid "``<:re>``"
-msgstr ""
-
-# 130a34b229ec4ad2b259dea070431d03
-#: ../../tutorial.rst:190
-msgid ""
-"Try to avoid the old syntax in future projects if you can. It is not "
-"currently deprecated, but will be eventually."
-msgstr ""
-
# 864af2a245c54a00a3e1427f7a2d0727
-#: ../../tutorial.rst:194
+#: ../../tutorial.rst:177
msgid "HTTP Request Methods"
msgstr ""
-# 395fb41a1c104235a5aa04013b4b3a2f
-#: ../../tutorial.rst:198
-msgid ""
-"The HTTP protocol defines several `request methods`__ (sometimes referred to"
-" as \"verbs\") for different tasks. GET is the default for all routes with "
-"no other method specified. These routes will match GET requests only. To "
-"handle other methods such as POST, PUT, DELETE or PATCH, add a ``method`` "
-"keyword argument to the :func:`route` decorator or use one of the four "
-"alternative decorators: :func:`get`, :func:`post`, :func:`put`, "
-":func:`delete` or :func:`patch`."
-msgstr ""
-
# 38ed35133fb44f9a9bf5d2c9a6be2f32
-#: ../../tutorial.rst:200
+#: ../../tutorial.rst:183
msgid ""
"The POST method is commonly used for HTML form submission. This example "
"shows how to handle a login form using POST::"
msgstr ""
# d17059ed777642ab94f518b284840688
-#: ../../tutorial.rst:223
+#: ../../tutorial.rst:206
msgid ""
"In this example the ``/login`` URL is linked to two distinct callbacks, one "
"for GET requests and another for POST requests. The first one displays a "
@@ -361,12 +258,12 @@ msgid ""
msgstr ""
# e32d9ac6f2ee43dcb1398f0b9a0211bb
-#: ../../tutorial.rst:226
+#: ../../tutorial.rst:209
msgid "Special Methods: HEAD and ANY"
msgstr ""
# 8a4bd657eb1444fca9f73e476ce83add
-#: ../../tutorial.rst:227
+#: ../../tutorial.rst:210
msgid ""
"The HEAD method is used to ask for the response identical to the one that "
"would correspond to a GET request, but without the response body. This is "
@@ -377,7 +274,7 @@ msgid ""
msgstr ""
# 13d5ec233f9142a0a72d7c51d5b81aaf
-#: ../../tutorial.rst:229
+#: ../../tutorial.rst:212
msgid ""
"Additionally, the non-standard ANY method works as a low priority fallback: "
"Routes that listen to ANY will match requests regardless of their HTTP "
@@ -386,7 +283,7 @@ msgid ""
msgstr ""
# 2f5973de9de64648aed357b34a9bdb7f
-#: ../../tutorial.rst:231
+#: ../../tutorial.rst:214
msgid ""
"To sum it up: HEAD requests fall back to GET routes and all requests fall "
"back to ANY routes, but only if there is no matching route for the original "
@@ -394,12 +291,12 @@ msgid ""
msgstr ""
# ad164662e90f4041a85a2a11db1ee0c0
-#: ../../tutorial.rst:236
+#: ../../tutorial.rst:219
msgid "Routing Static Files"
msgstr ""
# cd0e402ae2e540ec97c12063e42d6126
-#: ../../tutorial.rst:238
+#: ../../tutorial.rst:221
msgid ""
"Static files such as images or CSS files are not served automatically. You "
"have to add a route and a callback to control which files get served and "
@@ -407,7 +304,7 @@ msgid ""
msgstr ""
# 3a2559a5b63d4ee9acb4440e8fe1a96b
-#: ../../tutorial.rst:245
+#: ../../tutorial.rst:228
msgid ""
"The :func:`static_file` function is a helper to serve files in a safe and "
"convenient way (see :ref:`tutorial-static-files`). This example is limited "
@@ -418,7 +315,7 @@ msgid ""
msgstr ""
# f94439ce4dd24a4686de019b5220de9f
-#: ../../tutorial.rst:251
+#: ../../tutorial.rst:234
msgid ""
"Be careful when specifying a relative root-path such as "
"``root='./static/files'``. The working directory (``./``) and the project "
@@ -426,12 +323,12 @@ msgid ""
msgstr ""
# 7190cf7dbf864ebd8b6c170aabbd3cd4
-#: ../../tutorial.rst:259
+#: ../../tutorial.rst:242
msgid "Error Pages"
msgstr ""
# 5952f6f875ba4e9680b422c6eaf3433f
-#: ../../tutorial.rst:261
+#: ../../tutorial.rst:244
msgid ""
"If anything goes wrong, Bottle displays an informative but fairly plain "
"error page. You can override the default for a specific HTTP status code "
@@ -439,7 +336,7 @@ msgid ""
msgstr ""
# 426ced6e32c64e6dbe403e8d78fcc294
-#: ../../tutorial.rst:268
+#: ../../tutorial.rst:251
msgid ""
"From now on, `404 File not Found` errors will display a custom error page to"
" the user. The only parameter passed to the error-handler is an instance of "
@@ -450,7 +347,7 @@ msgid ""
msgstr ""
# 9a3f76d9b41c4aac95bf8f66199040f8
-#: ../../tutorial.rst:270
+#: ../../tutorial.rst:253
msgid ""
"Error handlers are used only if your application returns or raises an "
":exc:`HTTPError` exception (:func:`abort` does just that). Changing "
@@ -459,12 +356,12 @@ msgid ""
msgstr ""
# f1092bc764cc43eb8282b79e64fdd6b1
-#: ../../tutorial.rst:280
+#: ../../tutorial.rst:263
msgid "Generating content"
msgstr ""
# 56668c66a418409daf59198d87bddcd7
-#: ../../tutorial.rst:282
+#: ../../tutorial.rst:265
msgid ""
"In pure WSGI, the range of types you may return from your application is "
"very limited. Applications must return an iterable yielding byte strings. "
@@ -474,7 +371,7 @@ msgid ""
msgstr ""
# f83bbefffadd44088cae7bad2965ef44
-#: ../../tutorial.rst:284
+#: ../../tutorial.rst:267
msgid ""
"Bottle is much more flexible and supports a wide range of types. It even "
"adds a ``Content-Length`` header if possible and encodes unicode "
@@ -484,12 +381,12 @@ msgid ""
msgstr ""
# 5582a4ab861b4a0e95d77f4cc88d656b
-#: ../../tutorial.rst:287
+#: ../../tutorial.rst:270
msgid "Dictionaries"
msgstr ""
# 0af07cab0f9c480190e8a9be3918e772
-#: ../../tutorial.rst:287
+#: ../../tutorial.rst:270
msgid ""
"As mentioned above, Python dictionaries (or subclasses thereof) are "
"automatically transformed into JSON strings and returned to the browser with"
@@ -498,24 +395,19 @@ msgid ""
"too. See the :ref:`tutorial-output-filter` to learn more."
msgstr ""
-# b20177cad06a4b3b90c53a2f8f58b81c
-#: ../../tutorial.rst:290
-msgid "Empty Strings, ``False``, ``None`` or other non-true values:"
-msgstr ""
-
# cb9f588a721642e58e31a5528cf0aa4c
-#: ../../tutorial.rst:290
+#: ../../tutorial.rst:273
msgid ""
"These produce an empty output with the ``Content-Length`` header set to 0."
msgstr ""
# 28cba6ed4b7b4957b430bb232ee63da1
-#: ../../tutorial.rst:293
+#: ../../tutorial.rst:276
msgid "Unicode strings"
msgstr ""
# 9c2199e8fa46413bab1ea8298b4ee004
-#: ../../tutorial.rst:293
+#: ../../tutorial.rst:276
msgid ""
"Unicode strings (or iterables yielding unicode strings) are automatically "
"encoded with the codec specified in the ``Content-Type`` header (utf8 by "
@@ -523,12 +415,12 @@ msgid ""
msgstr ""
# a698affc9a2c42339ec92d0731899f6f
-#: ../../tutorial.rst:296
+#: ../../tutorial.rst:279
msgid "Byte strings"
msgstr ""
# d262affdb36c451a8019b09562c8256a
-#: ../../tutorial.rst:296
+#: ../../tutorial.rst:279
msgid ""
"Bottle returns strings as a whole (instead of iterating over each char) and "
"adds a ``Content-Length`` header based on the string length. Lists of byte "
@@ -537,13 +429,8 @@ msgid ""
"Length`` header is not set in this case."
msgstr ""
-# 59157588717e485aabb23d0f768e5ced
-#: ../../tutorial.rst:299
-msgid "Instances of :exc:`HTTPError` or :exc:`HTTPResponse`"
-msgstr ""
-
# 9d8efc187aec4989be3e1288c4c026fc
-#: ../../tutorial.rst:299
+#: ../../tutorial.rst:282
msgid ""
"Returning these has the same effect as when raising them as an exception. In"
" case of an :exc:`HTTPError`, the error handler is applied. See :ref"
@@ -551,12 +438,12 @@ msgid ""
msgstr ""
# 4c3d3fba4cc2450892b64b0a9223c274
-#: ../../tutorial.rst:302
+#: ../../tutorial.rst:285
msgid "File objects"
msgstr ""
# 3574557ba4ac4fb386adcd8624e4b9be
-#: ../../tutorial.rst:302
+#: ../../tutorial.rst:285
msgid ""
"Everything that has a ``.read()`` method is treated as a file or file-like "
"object and passed to the ``wsgi.file_wrapper`` callable defined by the WSGI "
@@ -568,12 +455,12 @@ msgid ""
msgstr ""
# 7be34241e15f4b699d4540bee296437a
-#: ../../tutorial.rst:305
+#: ../../tutorial.rst:288
msgid "Iterables and generators"
msgstr ""
# ac0488d7101847eeb1a33474a2bec821
-#: ../../tutorial.rst:305
+#: ../../tutorial.rst:288
msgid ""
"You are allowed to use ``yield`` within your callbacks or return an "
"iterable, as long as the iterable yields byte strings, unicode strings, "
@@ -584,7 +471,7 @@ msgid ""
msgstr ""
# 4904796ade9540ed9abbd72f956d39b0
-#: ../../tutorial.rst:307
+#: ../../tutorial.rst:290
msgid ""
"The ordering of this list is significant. You may for example return a "
"subclass of :class:`str` with a ``read()`` method. It is still treated as a "
@@ -592,12 +479,12 @@ msgid ""
msgstr ""
# 22fd5efc83884c8aade1ae0816f3382a
-#: ../../tutorial.rst:310
+#: ../../tutorial.rst:293
msgid "Changing the Default Encoding"
msgstr ""
# b886ac8e69f7421ea52d0aac4e02eb7b
-#: ../../tutorial.rst:311
+#: ../../tutorial.rst:294
msgid ""
"Bottle uses the `charset` parameter of the ``Content-Type`` header to decide"
" how to encode unicode strings. This header defaults to ``text/html; "
@@ -608,7 +495,7 @@ msgid ""
msgstr ""
# 9fb228f33a6b4d36bad93c056e913d85
-#: ../../tutorial.rst:326
+#: ../../tutorial.rst:309
msgid ""
"In some rare cases the Python encoding names differ from the names supported"
" by the HTTP specification. Then, you have to do both: first set the "
@@ -618,12 +505,12 @@ msgid ""
msgstr ""
# 6246a9980df8482a9d21b476e860e934
-#: ../../tutorial.rst:331
+#: ../../tutorial.rst:314
msgid "Static Files"
msgstr ""
# 6577ce77ebce4154bea308e783a8f2c4
-#: ../../tutorial.rst:333
+#: ../../tutorial.rst:316
msgid ""
"You can directly return file objects, but :func:`static_file` is the "
"recommended way to serve static files. It automatically guesses a mime-type,"
@@ -635,19 +522,19 @@ msgid ""
msgstr ""
# d16e71e083184059bbf08afc0fb9a57d
-#: ../../tutorial.rst:346
+#: ../../tutorial.rst:329
msgid ""
"You can raise the return value of :func:`static_file` as an exception if you"
" really need to."
msgstr ""
# c6a61579847e4979b39844da1c7c1437
-#: ../../tutorial.rst:349
+#: ../../tutorial.rst:332
msgid "Forced Download"
msgstr ""
# 92e3e880d653496584a1fedb1c450809
-#: ../../tutorial.rst:350
+#: ../../tutorial.rst:333
msgid ""
"Most browsers try to open downloaded files if the MIME type is known and "
"assigned to an application (e.g. PDF files). If this is not what you want, "
@@ -655,25 +542,25 @@ msgid ""
msgstr ""
# 868eadb6b675438bbd4e4e00e77ea5dc
-#: ../../tutorial.rst:356
+#: ../../tutorial.rst:339
msgid ""
"If the ``download`` parameter is just ``True``, the original filename is "
"used."
msgstr ""
# 5170980d61fa48c3a798819613bd979a
-#: ../../tutorial.rst:361
+#: ../../tutorial.rst:344
msgid "HTTP Errors and Redirects"
msgstr ""
# 39600d8c864a413e8f0b91d7115903d9
-#: ../../tutorial.rst:363
+#: ../../tutorial.rst:346
msgid ""
"The :func:`abort` function is a shortcut for generating HTTP error pages."
msgstr ""
# 89afe97f71a74600b0a92866b55c208c
-#: ../../tutorial.rst:372
+#: ../../tutorial.rst:355
msgid ""
"To redirect a client to a different URL, you can send a ``303 See Other`` "
"response with the ``Location`` header set to the new URL. :func:`redirect` "
@@ -681,24 +568,24 @@ msgid ""
msgstr ""
# 2c6d6522d36f472baae5da4acd70dcad
-#: ../../tutorial.rst:379
+#: ../../tutorial.rst:362
msgid "You may provide a different HTTP status code as a second parameter."
msgstr ""
# 8261a4a6a4db4182bcbfec5411cc864c
-#: ../../tutorial.rst:382
+#: ../../tutorial.rst:365
msgid ""
"Both functions will interrupt your callback code by raising an "
":exc:`HTTPError` exception."
msgstr ""
# 7af63c8946c94640a29ea3c200e0cbfa
-#: ../../tutorial.rst:385
+#: ../../tutorial.rst:368
msgid "Other Exceptions"
msgstr ""
# 38f50e2703a94839ad3744a16099dd0b
-#: ../../tutorial.rst:386
+#: ../../tutorial.rst:369
msgid ""
"All exceptions other than :exc:`HTTPResponse` or :exc:`HTTPError` will "
"result in a ``500 Internal Server Error`` response, so they won't crash your"
@@ -707,12 +594,12 @@ msgid ""
msgstr ""
# 5b1413110d4b4fde8dbeac4ba1ac21d5
-#: ../../tutorial.rst:392
+#: ../../tutorial.rst:375
msgid "The :class:`Response` Object"
msgstr ""
# f13e21c89da34f2a97acd3e1b95d2533
-#: ../../tutorial.rst:394
+#: ../../tutorial.rst:377
msgid ""
"Response metadata such as the HTTP status code, response headers and cookies"
" are stored in an object called :data:`response` up to the point where they "
@@ -723,12 +610,12 @@ msgid ""
msgstr ""
# 38f06fec96ec47b29c0cbfc22de8dd25
-#: ../../tutorial.rst:397
+#: ../../tutorial.rst:380
msgid "Status Code"
msgstr ""
# 5c082752523046a5803db071bd295050
-#: ../../tutorial.rst:398
+#: ../../tutorial.rst:381
msgid ""
"The `HTTP status code <http_code>`_ controls the behavior of the browser and"
" defaults to ``200 OK``. In most scenarios you won't need to set the "
@@ -740,12 +627,12 @@ msgid ""
msgstr ""
# e58a3f9b92b845858b168ed8e7fd897c
-#: ../../tutorial.rst:401
+#: ../../tutorial.rst:384
msgid "Response Header"
msgstr ""
# fe192653eed74523ab0c6ea7269aa31f
-#: ../../tutorial.rst:402
+#: ../../tutorial.rst:385
msgid ""
"Response headers such as ``Cache-Control`` or ``Location`` are defined via "
":meth:`Response.set_header`. This method takes two parameters, a header name"
@@ -753,7 +640,7 @@ msgid ""
msgstr ""
# f0fe9d7d598146ff9d7f6b609556afbb
-#: ../../tutorial.rst:409
+#: ../../tutorial.rst:392
msgid ""
"Most headers are unique, meaning that only one header per name is send to "
"the client. Some special headers however are allowed to appear more than "
@@ -762,7 +649,7 @@ msgid ""
msgstr ""
# cc53dfe73b784f368f983b0ab35b6590
-#: ../../tutorial.rst:414
+#: ../../tutorial.rst:397
msgid ""
"Please note that this is just an example. If you want to work with cookies, "
"read :ref:`ahead <tutorial-cookies>`."
@@ -770,12 +657,12 @@ msgstr ""
# bff754a4f00341f7b58c157f392ed5e2
# d78c58fe2515483c9191fb1e9c0aa9dc
-#: ../../tutorial.rst:420 ../../tutorial.rst:549
+#: ../../tutorial.rst:403 ../../tutorial.rst:532
msgid "Cookies"
msgstr ""
# 2ce5fe9ac949486a90e4b6979ad388cb
-#: ../../tutorial.rst:422
+#: ../../tutorial.rst:405
msgid ""
"A cookie is a named piece of text stored in the user's browser profile. You "
"can access previously defined cookies via :meth:`Request.get_cookie` and set"
@@ -783,7 +670,7 @@ msgid ""
msgstr ""
# 073cba4dac4a4ba7ba7f084fe9e40c2a
-#: ../../tutorial.rst:432
+#: ../../tutorial.rst:415
msgid ""
"The :meth:`Response.set_cookie` method accepts a number of additional "
"keyword arguments that control the cookies lifetime and behavior. Some of "
@@ -791,42 +678,42 @@ msgid ""
msgstr ""
# eeba19ba3d9249df9fc326022429b2c8
-#: ../../tutorial.rst:434
+#: ../../tutorial.rst:417
msgid "**max_age:** Maximum age in seconds. (default: ``None``)"
msgstr ""
# c62fb8cd2b7e41f589a2e88705ee9924
-#: ../../tutorial.rst:435
+#: ../../tutorial.rst:418
msgid ""
"**expires:** A datetime object or UNIX timestamp. (default: ``None``)"
msgstr ""
# c8c5c5f6eb5448539c5b91515609dec9
-#: ../../tutorial.rst:436
+#: ../../tutorial.rst:419
msgid ""
"**domain:** The domain that is allowed to read the cookie. (default: "
"current domain)"
msgstr ""
# 6d0ae30c2bdb4082924490a3581927f6
-#: ../../tutorial.rst:437
+#: ../../tutorial.rst:420
msgid "**path:** Limit the cookie to a given path (default: ``/``)"
msgstr ""
# 89af9a7789814bf3a3d39831ee47d339
-#: ../../tutorial.rst:438
+#: ../../tutorial.rst:421
msgid "**secure:** Limit the cookie to HTTPS connections (default: off)."
msgstr ""
# ef929e1f89ea47b490f269945058f447
-#: ../../tutorial.rst:439
+#: ../../tutorial.rst:422
msgid ""
"**httponly:** Prevent client-side javascript to read this cookie (default:"
" off, requires Python 2.6 or newer)."
msgstr ""
# c44dea99790347c3b1411561849c89dd
-#: ../../tutorial.rst:441
+#: ../../tutorial.rst:424
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 "
@@ -834,12 +721,12 @@ msgid ""
msgstr ""
# 5802e77b9bc94dbe910071affe4e2d2b
-#: ../../tutorial.rst:443
+#: ../../tutorial.rst:426
msgid "Cookies are limited to 4 KB of text in most browsers."
msgstr ""
# 078f11701bd1466ca37e2bff02db03d2
-#: ../../tutorial.rst:444
+#: ../../tutorial.rst:427
msgid ""
"Some users configure their browsers to not accept cookies at all. Most "
"search engines ignore cookies too. Make sure that your application still "
@@ -847,7 +734,7 @@ msgid ""
msgstr ""
# 3e129493ead74cf2adb246bd3f35b3c7
-#: ../../tutorial.rst:445
+#: ../../tutorial.rst:428
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 "
@@ -858,17 +745,17 @@ msgid ""
msgstr ""
# 2d2b28d364fe43f68e5455243f4d6bd9
-#: ../../tutorial.rst:446
+#: ../../tutorial.rst:429
msgid "Cookies are easily forged by malicious clients. Do not trust cookies."
msgstr ""
# 57e3df9c7fbb4307918abf135b1b408d
-#: ../../tutorial.rst:451
+#: ../../tutorial.rst:434
msgid "Signed Cookies"
msgstr ""
# 92a3f73e4b3c4de8a7ed7941b2ce366c
-#: ../../tutorial.rst:452
+#: ../../tutorial.rst:435
msgid ""
"As mentioned above, cookies are easily forged by malicious clients. Bottle "
"can cryptographically sign your cookies to prevent this kind of "
@@ -879,7 +766,7 @@ msgid ""
msgstr ""
# e4e66538b103446eaaa6be8545814503
-#: ../../tutorial.rst:472
+#: ../../tutorial.rst:455
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 "
@@ -888,7 +775,7 @@ msgid ""
msgstr ""
# beb5c580407247ec9519564408987b5b
-#: ../../tutorial.rst:474
+#: ../../tutorial.rst:457
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 "
@@ -897,12 +784,12 @@ msgid ""
msgstr ""
# f81616266e524317b7881b24d9b0b913
-#: ../../tutorial.rst:487
+#: ../../tutorial.rst:470
msgid "Request Data"
msgstr ""
# f5735cfa714e43e6971a618eb223525f
-#: ../../tutorial.rst:489
+#: ../../tutorial.rst:472
msgid ""
"Cookies, HTTP header, HTML ``<form>`` fields and other request data is "
"available through the global :data:`request` object. This special object "
@@ -911,7 +798,7 @@ msgid ""
msgstr ""
# 89159d8092db437ba581dfabbd9373dd
-#: ../../tutorial.rst:498
+#: ../../tutorial.rst:481
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 "
@@ -919,12 +806,12 @@ msgid ""
msgstr ""
# df4a93a9d7534ca1a59cf027011e3090
-#: ../../tutorial.rst:503
+#: ../../tutorial.rst:486
msgid "Introducing :class:`FormsDict`"
msgstr ""
# 431fe46c72de430a81a899114cbd7b5d
-#: ../../tutorial.rst:505
+#: ../../tutorial.rst:488
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"
@@ -932,7 +819,7 @@ msgid ""
msgstr ""
# 398ec974232a4add91ded25202d804fa
-#: ../../tutorial.rst:507
+#: ../../tutorial.rst:490
msgid ""
"**Attribute access**: All values in the dictionary are also accessible as "
"attributes. These virtual attributes return unicode strings, even if the "
@@ -941,7 +828,7 @@ msgid ""
msgstr ""
# 31053961417647c1999307641ac677b2
-#: ../../tutorial.rst:522
+#: ../../tutorial.rst:505
msgid ""
"**Multiple values per key:** :class:`FormsDict` is a subclass of "
":class:`MultiDict` and can store more than one value per key. The standard "
@@ -951,7 +838,7 @@ msgid ""
msgstr ""
# 63ef53e5110b48f3b386e4817dd43ae1
-#: ../../tutorial.rst:527
+#: ../../tutorial.rst:510
msgid ""
"**WTForms support:** Some libraries (e.g. `WTForms "
"<http://wtforms.simplecodes.com/>`_) want all-unicode dictionaries as input."
@@ -961,7 +848,7 @@ msgid ""
msgstr ""
# cae78dee769745038d0e99d7f1962e92
-#: ../../tutorial.rst:531
+#: ../../tutorial.rst:514
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 "
@@ -970,7 +857,7 @@ msgid ""
msgstr ""
# 860bf56342f9464cb363e7ceb8d8f191
-#: ../../tutorial.rst:538
+#: ../../tutorial.rst:521
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 "
@@ -983,14 +870,14 @@ msgid ""
msgstr ""
# d1d25ef91b1149e08b56d7eec46bc3b6
-#: ../../tutorial.rst:545
+#: ../../tutorial.rst:528
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 ""
# 1f41cf2d2cdd4445873e264035b1442b
-#: ../../tutorial.rst:551
+#: ../../tutorial.rst:534
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 "
@@ -999,7 +886,7 @@ msgid ""
msgstr ""
# e24f4025a9484c5e8029385b83a05f53
-#: ../../tutorial.rst:553
+#: ../../tutorial.rst:536
msgid ""
"All cookies sent by the client are available through "
":attr:`BaseRequest.cookies` (a :class:`FormsDict`). This example shows a "
@@ -1007,7 +894,7 @@ msgid ""
msgstr ""
# 3a28598cdb314053b4534f8bb55582cb
-#: ../../tutorial.rst:563
+#: ../../tutorial.rst:546
msgid ""
"The :meth:`BaseRequest.get_cookie` method is a different way do access "
"cookies. It supports decoding :ref:`signed cookies <tutorial-signed-"
@@ -1015,12 +902,12 @@ msgid ""
msgstr ""
# f213ece9c0d84067854f53077a331dba
-#: ../../tutorial.rst:566
+#: ../../tutorial.rst:549
msgid "HTTP Headers"
msgstr ""
# 8a8fc6a8d22c4efbaa818329a0cdc607
-#: ../../tutorial.rst:568
+#: ../../tutorial.rst:551
msgid ""
"All HTTP headers sent by the client (e.g. ``Referer``, ``Agent`` or "
"``Accept-Language``) are stored in a :class:`WSGIHeaderDict` and accessible "
@@ -1029,12 +916,12 @@ msgid ""
msgstr ""
# d28b3873034d468d905e90b0405c8f25
-#: ../../tutorial.rst:580
+#: ../../tutorial.rst:563
msgid "Query Variables"
msgstr ""
# 15eaede90aa64490b333ee269b97e6c7
-#: ../../tutorial.rst:582
+#: ../../tutorial.rst:565
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 "
@@ -1044,19 +931,19 @@ msgid ""
msgstr ""
# 8afda217e0c1411c93dfb29d25e7b68b
-#: ../../tutorial.rst:595
+#: ../../tutorial.rst:578
msgid "HTML `<form>` Handling"
msgstr ""
# 47bccfd4c83b4534813d04312a8f44d8
-#: ../../tutorial.rst:597
+#: ../../tutorial.rst:580
msgid ""
"Let us start from the beginning. In HTML, a typical ``<form>`` looks "
"something like this:"
msgstr ""
# 64d8978da120454982ea5a701336edd4
-#: ../../tutorial.rst:607
+#: ../../tutorial.rst:590
msgid ""
"The ``action`` attribute specifies the URL that will receive the form data. "
"``method`` defines the HTTP method to use (``GET`` or ``POST``). With "
@@ -1067,14 +954,14 @@ msgid ""
msgstr ""
# f991d9afa38b458e9c90c2ff47e789f4
-#: ../../tutorial.rst:609
+#: ../../tutorial.rst:592
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 ""
# 81cff7f4af934d6fa9360ab54da95cb6
-#: ../../tutorial.rst:632
+#: ../../tutorial.rst:615
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"
@@ -1082,27 +969,27 @@ msgid ""
msgstr ""
# 6702069df9974731a7ea60ca75cab0f9
-#: ../../tutorial.rst:635
+#: ../../tutorial.rst:618
msgid "Attribute"
msgstr ""
# d244efbdf14047919a287b05efa14f67
-#: ../../tutorial.rst:635
+#: ../../tutorial.rst:618
msgid "GET Form fields"
msgstr ""
# dfc1e30176c84efcb0ae93db03175783
-#: ../../tutorial.rst:635
+#: ../../tutorial.rst:618
msgid "POST Form fields"
msgstr ""
# 0f1381b897e7406f8b7c9fd4968e52da
-#: ../../tutorial.rst:635
+#: ../../tutorial.rst:618
msgid "File Uploads"
msgstr ""
# 0ce02ef13e8f46b19a80f42290c2c442
-#: ../../tutorial.rst:637
+#: ../../tutorial.rst:620
msgid ":attr:`BaseRequest.query`"
msgstr ""
@@ -1114,9 +1001,9 @@ msgstr ""
# 259a134887df4aefa37e401e1f74fcf3
# 5d9e107544124f1189df3569c785a4f9
# be692b7f81ad4459906b76b89aa77cb0
-#: ../../tutorial.rst:637 ../../tutorial.rst:638 ../../tutorial.rst:639
-#: ../../tutorial.rst:640 ../../tutorial.rst:640 ../../tutorial.rst:641
-#: ../../tutorial.rst:642 ../../tutorial.rst:642
+#: ../../tutorial.rst:620 ../../tutorial.rst:621 ../../tutorial.rst:622
+#: ../../tutorial.rst:623 ../../tutorial.rst:623 ../../tutorial.rst:624
+#: ../../tutorial.rst:625 ../../tutorial.rst:625
msgid "yes"
msgstr ""
@@ -1130,45 +1017,45 @@ msgstr ""
# 4032074c7e0748528569b583e2e5286b
# 797c2c93982040d7913ec152eaa6349a
# bef53fde1b334d9ab5d5571f37e3f53f
-#: ../../tutorial.rst:637 ../../tutorial.rst:637 ../../tutorial.rst:638
-#: ../../tutorial.rst:638 ../../tutorial.rst:639 ../../tutorial.rst:639
-#: ../../tutorial.rst:640 ../../tutorial.rst:641 ../../tutorial.rst:641
-#: ../../tutorial.rst:642
+#: ../../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
msgid "no"
msgstr ""
# 774116fa45d944548da6b38a82256693
-#: ../../tutorial.rst:638
+#: ../../tutorial.rst:621
msgid ":attr:`BaseRequest.forms`"
msgstr ""
# 1af3b00479c946e68e966f8e00c2d9fa
-#: ../../tutorial.rst:639
+#: ../../tutorial.rst:622
msgid ":attr:`BaseRequest.files`"
msgstr ""
# 713441a08c9b42359dd5e70eea1dfb2c
-#: ../../tutorial.rst:640
+#: ../../tutorial.rst:623
msgid ":attr:`BaseRequest.params`"
msgstr ""
# 210cda782b0c4601b2b1b3e793621ace
-#: ../../tutorial.rst:641
+#: ../../tutorial.rst:624
msgid ":attr:`BaseRequest.GET`"
msgstr ""
# bb796720e91d48c7a8817cff648e154b
-#: ../../tutorial.rst:642
+#: ../../tutorial.rst:625
msgid ":attr:`BaseRequest.POST`"
msgstr ""
# c713689f0f9649adbdaed97afc4fc888
-#: ../../tutorial.rst:647
+#: ../../tutorial.rst:630
msgid "File uploads"
msgstr ""
# f09f90f8cd8a426dbae4c7fb4a8a1544
-#: ../../tutorial.rst:649
+#: ../../tutorial.rst:632
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 "
@@ -1178,7 +1065,7 @@ msgid ""
msgstr ""
# 5621abf2254141d59a63e48e0ff8f2a0
-#: ../../tutorial.rst:659
+#: ../../tutorial.rst:642
msgid ""
"Bottle stores file uploads in :attr:`BaseRequest.files` as "
":class:`FileUpload` instances, along with some metadata about the upload. "
@@ -1186,7 +1073,7 @@ msgid ""
msgstr ""
# afd75710819b4c39a70d77987aa39395
-#: ../../tutorial.rst:673
+#: ../../tutorial.rst:656
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 "
@@ -1196,7 +1083,7 @@ msgid ""
msgstr ""
# c413b885489c4cb28d0213b211c9083b
-#: ../../tutorial.rst:675
+#: ../../tutorial.rst:658
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 "
@@ -1206,12 +1093,12 @@ msgid ""
msgstr ""
# 7c1b1718d1cb4ac0bedcad349b6e7e9f
-#: ../../tutorial.rst:679
+#: ../../tutorial.rst:662
msgid "JSON Content"
msgstr ""
# 94dca01a171e406cb291c5f40a246907
-#: ../../tutorial.rst:681
+#: ../../tutorial.rst:664
msgid ""
"Some JavaScript or REST clients send ``application/json`` content to the "
"server. The :attr:`BaseRequest.json` attribute contains the parsed data "
@@ -1219,12 +1106,12 @@ msgid ""
msgstr ""
# b18fe51c7d944a35ac322ca51d760407
-#: ../../tutorial.rst:685
+#: ../../tutorial.rst:668
msgid "The raw request body"
msgstr ""
# 3c02f3635cd4412e88370791707f1307
-#: ../../tutorial.rst:687
+#: ../../tutorial.rst:670
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 "
@@ -1235,12 +1122,12 @@ msgid ""
msgstr ""
# 31e459b302f947c3a11bc4bd8c3130c2
-#: ../../tutorial.rst:692
+#: ../../tutorial.rst:675
msgid "WSGI Environment"
msgstr ""
# 277b90d681814132b180f82d12dbedea
-#: ../../tutorial.rst:694
+#: ../../tutorial.rst:677
msgid ""
"Each :class:`BaseRequest` instance wraps a WSGI environment dictionary. The "
"original is stored in :attr:`BaseRequest.environ`, but the request object "
@@ -1250,12 +1137,12 @@ msgid ""
msgstr ""
# cbc4820353de4a8fa7d8093817f8cb58
-#: ../../tutorial.rst:712
+#: ../../tutorial.rst:695
msgid "Templates"
msgstr ""
# 7f54e3b252594f1296fd078b53278355
-#: ../../tutorial.rst:714
+#: ../../tutorial.rst:697
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 "
@@ -1265,7 +1152,7 @@ msgid ""
msgstr ""
# 9c995ce0ba9247d998d1daf11889c3d4
-#: ../../tutorial.rst:721
+#: ../../tutorial.rst:704
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 "
@@ -1274,19 +1161,19 @@ msgid ""
msgstr ""
# 3fb064d060e74fa9b91c7e9019037bcb
-#: ../../tutorial.rst:723
+#: ../../tutorial.rst:706
msgid ""
"The :func:`view` decorator allows you to return a dictionary with the "
"template variables instead of calling :func:`template`::"
msgstr ""
# 793d0013d90b46688230efac332591c6
-#: ../../tutorial.rst:732
+#: ../../tutorial.rst:715
msgid "Syntax"
msgstr ""
# 276911f834024512812f74daa82b7b9a
-#: ../../tutorial.rst:735
+#: ../../tutorial.rst:718
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 "
@@ -1295,17 +1182,17 @@ msgid ""
msgstr ""
# 8b3dfbc242614a39bbbcbd2c7b480650
-#: ../../tutorial.rst:737
+#: ../../tutorial.rst:720
msgid "Here is an example template::"
msgstr ""
# 9fb13a88ef1e48dabfb9003411f0da05
-#: ../../tutorial.rst:748
+#: ../../tutorial.rst:731
msgid "Caching"
msgstr ""
# 014c2131d61848819bd5efafc48a7c23
-#: ../../tutorial.rst:749
+#: ../../tutorial.rst:732
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 "
@@ -1313,12 +1200,12 @@ msgid ""
msgstr ""
# bca0ac7a52cf4ad2be2fd039a319376f
-#: ../../tutorial.rst:759
+#: ../../tutorial.rst:742
msgid "Plugins"
msgstr ""
# 25be41e29e994bb39b03cca0274c82c4
-#: ../../tutorial.rst:763
+#: ../../tutorial.rst:746
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 "
@@ -1327,7 +1214,7 @@ msgid ""
msgstr ""
# 8f13e7d3d6ce4e76a84a4960b1cb4d16
-#: ../../tutorial.rst:765
+#: ../../tutorial.rst:748
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 "
@@ -1336,7 +1223,7 @@ msgid ""
msgstr ""
# 0594cbaaa49844da81038387ed1bfa0f
-#: ../../tutorial.rst:767
+#: ../../tutorial.rst:750
msgid ""
"The effects and APIs of plugins are manifold and depend on the specific "
"plugin. The ``SQLitePlugin`` plugin for example detects callbacks that "
@@ -1346,7 +1233,7 @@ msgid ""
msgstr ""
# a54a3ff608494fc4a8746922337e3dbc
-#: ../../tutorial.rst:787
+#: ../../tutorial.rst:770
msgid ""
"Other plugin may populate the thread-safe :data:`local` object, change "
"details of the :data:`request` object, filter the data returned by the "
@@ -1356,12 +1243,12 @@ msgid ""
msgstr ""
# 85df0eb6da384cc69f757bc3bb5e462d
-#: ../../tutorial.rst:791
+#: ../../tutorial.rst:774
msgid "Application-wide Installation"
msgstr ""
# d0222cf4aa4c4835af86c94d7c0c0589
-#: ../../tutorial.rst:793
+#: ../../tutorial.rst:776
msgid ""
"Plugins can be installed application-wide or just to some specific routes "
"that need additional functionality. Most plugins can safely be installed to "
@@ -1370,7 +1257,7 @@ msgid ""
msgstr ""
# 57e02045eb6945f69f6f863fe0953064
-#: ../../tutorial.rst:795
+#: ../../tutorial.rst:778
msgid ""
"Let us take the ``SQLitePlugin`` plugin for example. It only affects route "
"callbacks that need a database connection. Other routes are left alone. "
@@ -1379,14 +1266,14 @@ msgid ""
msgstr ""
# 7195c359c8f94d89b1d0fd93875173b7
-#: ../../tutorial.rst:797
+#: ../../tutorial.rst:780
msgid ""
"To install a plugin, just call :func:`install` with the plugin as first "
"argument::"
msgstr ""
# 79c5ac9cbe514621842159896ee0ae5d
-#: ../../tutorial.rst:802
+#: ../../tutorial.rst:785
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"
@@ -1396,19 +1283,19 @@ msgid ""
msgstr ""
# 76f0442c3c9f48d596a3612707f2b4f1
-#: ../../tutorial.rst:806
+#: ../../tutorial.rst:789
msgid "Uninstall Plugins"
msgstr ""
# 9e704003eec5447b87efbfdbeb2bde74
-#: ../../tutorial.rst:807
+#: ../../tutorial.rst:790
msgid ""
"You can use a name, class or instance to :func:`uninstall` a previously "
"installed plugin::"
msgstr ""
# 4f74d521e0c84a759bf77d9eb22a485b
-#: ../../tutorial.rst:817
+#: ../../tutorial.rst:800
msgid ""
"Plugins can be installed and removed at any time, even at runtime while "
"serving requests. This enables some neat tricks (installing slow debugging "
@@ -1418,7 +1305,7 @@ msgid ""
msgstr ""
# 40927582b3c84e00bbc2191d16078246
-#: ../../tutorial.rst:820
+#: ../../tutorial.rst:803
msgid ""
"The module-level :func:`install` and :func:`uninstall` functions affect the "
":ref:`default-app`. To manage plugins for a specific application, use the "
@@ -1426,31 +1313,31 @@ msgid ""
msgstr ""
# 58c602357cdf4076a0038b3d440bd688
-#: ../../tutorial.rst:824
+#: ../../tutorial.rst:807
msgid "Route-specific Installation"
msgstr ""
# 8f59747bb8e648fdba1d771c2939cad8
-#: ../../tutorial.rst:826
+#: ../../tutorial.rst:809
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 ""
# abcb2ceeb0054dc58ef4237a350faf34
-#: ../../tutorial.rst:836
+#: ../../tutorial.rst:819
msgid "Blacklisting Plugins"
msgstr ""
# b731ed592be14b0d9c004e4a214e3489
-#: ../../tutorial.rst:838
+#: ../../tutorial.rst:821
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 ""
# d85ad26d6e3a46d5818f416319d0c5a3
-#: ../../tutorial.rst:860
+#: ../../tutorial.rst:843
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. "
@@ -1458,12 +1345,12 @@ msgid ""
msgstr ""
# b0e92a806c1540a8b226edd15c74a341
-#: ../../tutorial.rst:863
+#: ../../tutorial.rst:846
msgid "Plugins and Sub-Applications"
msgstr ""
# d94f16ee803544499b013738990cfeb7
-#: ../../tutorial.rst:865
+#: ../../tutorial.rst:848
msgid ""
"Most plugins are specific to the application they were installed to. "
"Consequently, they should not affect sub-applications mounted with "
@@ -1471,7 +1358,7 @@ msgid ""
msgstr ""
# 40b102855d834ae1a674b32c75aa31d5
-#: ../../tutorial.rst:876
+#: ../../tutorial.rst:859
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 "
@@ -1481,14 +1368,14 @@ msgid ""
msgstr ""
# 4ae87ecf90a048f990df1510667100b3
-#: ../../tutorial.rst:878
+#: ../../tutorial.rst:861
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 ""
# a24c569c2903469eab34c396c43e83e9
-#: ../../tutorial.rst:882
+#: ../../tutorial.rst:865
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 "
@@ -1497,24 +1384,24 @@ msgid ""
msgstr ""
# 8dbf1a52f32d451784ef4d67fc179b0a
-#: ../../tutorial.rst:887
+#: ../../tutorial.rst:870
msgid "Development"
msgstr ""
# 8f36ef7efc4246bf9a542080c79eeede
-#: ../../tutorial.rst:889
+#: ../../tutorial.rst:872
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."
msgstr ""
# dd29da73ce5c432d8228bfa0d0d81099
-#: ../../tutorial.rst:895
+#: ../../tutorial.rst:878
msgid "Default Application"
msgstr ""
# 544a987ceb96442c9ccff5f1e2fe2e4b
-#: ../../tutorial.rst:897
+#: ../../tutorial.rst:880
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 "
@@ -1523,7 +1410,7 @@ msgid ""
msgstr ""
# 4e0ba4ae441f4e0281a706abb654d18d
-#: ../../tutorial.rst:905
+#: ../../tutorial.rst:888
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 "
@@ -1533,7 +1420,7 @@ msgid ""
msgstr ""
# 9714994da3d94f458ab6ee594a764f3d
-#: ../../tutorial.rst:915
+#: ../../tutorial.rst:898
msgid ""
"Separating the application object improves re-usability a lot, too. Other "
"developers can safely import the ``app`` object from your module and use "
@@ -1541,24 +1428,24 @@ msgid ""
msgstr ""
# 315dc7ab16da4382841a5dd90d0c731a
-#: ../../tutorial.rst:920
+#: ../../tutorial.rst:903
msgid ""
"Starting with bottle-0.13 you can use :class:`Bottle` instances as context "
"managers::"
msgstr ""
# e816f442ee374317a4db0354035a741f
-#: ../../tutorial.rst:945
+#: ../../tutorial.rst:928
msgid "Debug Mode"
msgstr ""
# 1841835c41ef4ab3b775053b920435f0
-#: ../../tutorial.rst:947
+#: ../../tutorial.rst:930
msgid "During early development, the debug mode can be very helpful."
msgstr ""
# 1e3210c116344bfcb3ecdad6b4df771e
-#: ../../tutorial.rst:955
+#: ../../tutorial.rst:938
msgid ""
"In this mode, Bottle is much more verbose and provides helpful debugging "
"information whenever an error occurs. It also disables some optimisations "
@@ -1567,37 +1454,37 @@ msgid ""
msgstr ""
# c024d64f3e44433380ea258a1e92dd53
-#: ../../tutorial.rst:957
+#: ../../tutorial.rst:940
msgid "Here is an incomplete list of things that change in debug mode:"
msgstr ""
# d51ba513873c4172ad91bfd90ccb2bd4
-#: ../../tutorial.rst:959
+#: ../../tutorial.rst:942
msgid "The default error page shows a traceback."
msgstr ""
# e6e131c916ed4f609f2da4fee618c82c
-#: ../../tutorial.rst:960
+#: ../../tutorial.rst:943
msgid "Templates are not cached."
msgstr ""
# 871d27067f994ad8a39c1ca49544ee68
-#: ../../tutorial.rst:961
+#: ../../tutorial.rst:944
msgid "Plugins are applied immediately."
msgstr ""
# b7d8c5b7008f45c0a038f83728a08df4
-#: ../../tutorial.rst:963
+#: ../../tutorial.rst:946
msgid "Just make sure not to use the debug mode on a production server."
msgstr ""
# 230a80d407214760b0f52d315277db98
-#: ../../tutorial.rst:966
+#: ../../tutorial.rst:949
msgid "Auto Reloading"
msgstr ""
# 5490d728bb6146a8935d3472247f547f
-#: ../../tutorial.rst:968
+#: ../../tutorial.rst:951
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 "
@@ -1606,7 +1493,7 @@ msgid ""
msgstr ""
# 70c64c23129b44948cff310d97af3f06
-#: ../../tutorial.rst:978
+#: ../../tutorial.rst:961
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 "
@@ -1614,7 +1501,7 @@ msgid ""
msgstr ""
# ec521c28413244ef883d0d26e2689e35
-#: ../../tutorial.rst:983
+#: ../../tutorial.rst:966
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"
@@ -1624,7 +1511,7 @@ msgid ""
msgstr ""
# 090016314dc74f0d9d5c06c11f77f1b4
-#: ../../tutorial.rst:989
+#: ../../tutorial.rst:972
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 "
@@ -1634,24 +1521,24 @@ msgid ""
msgstr ""
# e9af1d45586f47678186c5e456d8cbd6
-#: ../../tutorial.rst:997
+#: ../../tutorial.rst:980
msgid "Command Line Interface"
msgstr ""
# b7bb238a6c4940c6ad67a8522e5b64ad
-#: ../../tutorial.rst:1001
+#: ../../tutorial.rst:984
msgid "Starting with version 0.10 you can use bottle as a command-line tool:"
msgstr ""
# b069a1c2ef7c40d080c59f668bd47ed6
-#: ../../tutorial.rst:1021
+#: ../../tutorial.rst:1008
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 ""
# df531b1dbca34c6db295549ebe781feb
-#: ../../tutorial.rst:1023
+#: ../../tutorial.rst:1010
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 "
@@ -1660,12 +1547,12 @@ msgid ""
msgstr ""
# 2ff1ba34045444f296682d99266c76fc
-#: ../../tutorial.rst:1044
+#: ../../tutorial.rst:1031
msgid "Deployment"
msgstr ""
# 17875cb062b0410295d0c2070a303b46
-#: ../../tutorial.rst:1046
+#: ../../tutorial.rst:1033
msgid ""
"Bottle runs on the built-in `wsgiref WSGIServer "
"<http://docs.python.org/library/wsgiref.html#module-wsgiref.simple_server>`_"
@@ -1675,7 +1562,7 @@ msgid ""
msgstr ""
# 4c8326eabfd34669bce8c85bd409e9a5
-#: ../../tutorial.rst:1048
+#: ../../tutorial.rst:1035
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 "
@@ -1683,24 +1570,24 @@ msgid ""
msgstr ""
# 211f847f902344269c0f7414d7944b82
-#: ../../tutorial.rst:1052
+#: ../../tutorial.rst:1039
msgid ""
"This, and many other deployment options are described in a separate article:"
" :doc:`deployment`"
msgstr ""
# 81519fb5f1d7406cb9b6494174640cd1
-#: ../../tutorial.rst:1060
+#: ../../tutorial.rst:1047
msgid "Glossary"
msgstr ""
# 4ae50891b37244f6b923ca21c801242a
-#: ../../tutorial.rst:1063
+#: ../../tutorial.rst:1050
msgid "callback"
msgstr ""
# 76835012ccdd431ab1b60af7cff4e7da
-#: ../../tutorial.rst:1065
+#: ../../tutorial.rst:1052
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"
@@ -1708,12 +1595,12 @@ msgid ""
msgstr ""
# f565b2272291413296e44576e5844363
-#: ../../tutorial.rst:1069
+#: ../../tutorial.rst:1056
msgid "decorator"
msgstr ""
# 36051db8397e42e1ab2f41ae9b5cb8f9
-#: ../../tutorial.rst:1071
+#: ../../tutorial.rst:1058
msgid ""
"A function returning another function, usually applied as a function "
"transformation using the ``@decorator`` syntax. See `python documentation "
@@ -1723,12 +1610,12 @@ msgid ""
msgstr ""
# 78b63b0f25fa48fdadbc39087d8e88cb
-#: ../../tutorial.rst:1072
+#: ../../tutorial.rst:1059
msgid "environ"
msgstr ""
# abf5b7541b9e44b995bc839d58f02441
-#: ../../tutorial.rst:1074
+#: ../../tutorial.rst:1061
msgid ""
"A structure where information about all documents under the root is saved, "
"and used for cross-referencing. The environment is pickled after the "
@@ -1737,12 +1624,12 @@ msgid ""
msgstr ""
# f0ccedaa7176499786f45fd4103a3332
-#: ../../tutorial.rst:1078
+#: ../../tutorial.rst:1065
msgid "handler function"
msgstr ""
# 6a5c6163ec6347f2924b22eba8f34302
-#: ../../tutorial.rst:1080
+#: ../../tutorial.rst:1067
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"
@@ -1750,13 +1637,131 @@ msgid ""
msgstr ""
# 90e647e99d59401f9213900ed9c012d8
-#: ../../tutorial.rst:1083
+#: ../../tutorial.rst:1070
msgid "source directory"
msgstr ""
# 139a4e596dde491593d07ee7d082143e
-#: ../../tutorial.rst:1085
+#: ../../tutorial.rst:1072
msgid ""
"The directory which, including its subdirectories, contains all source files"
" for one Sphinx project."
msgstr ""
+
+#: ../../tutorial.rst:47
+msgid ""
+"Either way, you'll need Python 2.6 or newer (including 3.2+) to run bottle "
+"applications. If you do not have permissions to install packages system-wide"
+" or simply don't want to, create a `virtualenv "
+"<http://pypi.python.org/pypi/virtualenv>`_ first:"
+msgstr ""
+
+#: ../../tutorial.rst:87
+msgid ""
+"This is just a demonstration of the basic concept of how applications are "
+"built with Bottle. Continue reading and you'll see what else is possible."
+msgstr ""
+
+#: ../../tutorial.rst:150
+msgid ""
+"Filters can be used to define more specific wildcards, and/or transform the "
+"covered part of the URL before it is passed to the callback. A filtered "
+"wildcard is declared as ``<name:filter>`` or ``<name:filter:config>``. The "
+"syntax for the optional config part depends on the filter used."
+msgstr ""
+
+#: ../../tutorial.rst:181
+msgid ""
+"The HTTP protocol defines several `request methods`__ (sometimes referred to"
+" as \"verbs\") for different tasks. GET is the default for all routes with "
+"no other method specified. These routes will match GET requests only. To "
+"handle other methods such as POST, PUT, DELETE or PATCH, add a ``method`` "
+"keyword argument to the :func:`route` decorator or use one of the five "
+"alternative decorators: :func:`get`, :func:`post`, :func:`put`, "
+":func:`delete` or :func:`patch`."
+msgstr ""
+
+#: ../../tutorial.rst:273
+msgid "Empty Strings, False, None or other non-true values:"
+msgstr ""
+
+#: ../../tutorial.rst:282
+msgid "Instances of HTTPError or HTTPResponse"
+msgstr ""
+
+#~ msgid ""
+#~ "Either way, you'll need Python 2.5 or newer (including 3.x) to run bottle "
+#~ "applications. If you do not have permissions to install packages system-wide"
+#~ " or simply don't want to, create a `virtualenv "
+#~ "<http://pypi.python.org/pypi/virtualenv>`_ first:"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "Of course this is a very simple example, but it shows the basic concept of "
+#~ "how applications are built with Bottle. Continue reading and you'll see what"
+#~ " else is possible."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "Filters are used to define more specific wildcards, and/or transform the "
+#~ "covered part of the URL before it is passed to the callback. A filtered "
+#~ "wildcard is declared as ``<name:filter>`` or ``<name:filter:config>``. The "
+#~ "syntax for the optional config part depends on the filter used."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "The new rule syntax was introduced in **Bottle 0.10** to simplify some "
+#~ "common use cases, but the old syntax still works and you can find a lot of "
+#~ "code examples still using it. The differences are best described by example:"
+#~ msgstr ""
+
+#~ msgid "Old Syntax"
+#~ msgstr ""
+
+#~ msgid "New Syntax"
+#~ msgstr ""
+
+#~ msgid "``:name``"
+#~ msgstr ""
+
+#~ msgid "``<name>``"
+#~ msgstr ""
+
+#~ msgid "``:name#regexp#``"
+#~ msgstr ""
+
+#~ msgid "``<name:re:regexp>``"
+#~ msgstr ""
+
+#~ msgid "``:#regexp#``"
+#~ msgstr ""
+
+#~ msgid "``<:re:regexp>``"
+#~ msgstr ""
+
+#~ msgid "``:##``"
+#~ msgstr ""
+
+#~ msgid "``<:re>``"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "Try to avoid the old syntax in future projects if you can. It is not "
+#~ "currently deprecated, but will be eventually."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "The HTTP protocol defines several `request methods`__ (sometimes referred to"
+#~ " as \"verbs\") for different tasks. GET is the default for all routes with "
+#~ "no other method specified. These routes will match GET requests only. To "
+#~ "handle other methods such as POST, PUT, DELETE or PATCH, add a ``method`` "
+#~ "keyword argument to the :func:`route` decorator or use one of the four "
+#~ "alternative decorators: :func:`get`, :func:`post`, :func:`put`, "
+#~ ":func:`delete` or :func:`patch`."
+#~ msgstr ""
+
+#~ msgid "Empty Strings, ``False``, ``None`` or other non-true values:"
+#~ msgstr ""
+
+#~ msgid "Instances of :exc:`HTTPError` or :exc:`HTTPResponse`"
+#~ msgstr ""
diff --git a/docs/_locale/pt_BR/LC_MESSAGES/tutorial_app.po b/docs/_locale/pt_BR/LC_MESSAGES/tutorial_app.po
index 183f223..cde9435 100644
--- a/docs/_locale/pt_BR/LC_MESSAGES/tutorial_app.po
+++ b/docs/_locale/pt_BR/LC_MESSAGES/tutorial_app.po
@@ -1,7 +1,7 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2009-2015, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
-#
+#
# Translators:
msgid ""
msgstr ""
@@ -115,34 +115,23 @@ msgstr ""
msgid "adding new items to the list: ``http://localhost:8080/new``"
msgstr ""
-# 116e2fbb06854c79b691237133b50a90
-#: ../../tutorial_app.rst:48
-msgid "page for editing items: ``http://localhost:8080/edit/:no``"
-msgstr ""
-
-# dc255b22bb66487595d4ca7dfb56e5c1
-#: ../../tutorial_app.rst:49
-msgid ""
-"validating data assigned by dynamic routes with the @validate decorator"
-msgstr ""
-
# c5dfa85c8f7f4d47a5d899421c0c9884
-#: ../../tutorial_app.rst:50
+#: ../../tutorial_app.rst:49
msgid "catching errors"
msgstr ""
# bb42d53d10e04820bb8f9747cd6c53a4
-#: ../../tutorial_app.rst:53
+#: ../../tutorial_app.rst:52
msgid "Before We Start..."
msgstr ""
# bc6949274c9a40269f35abc838b0c783
-#: ../../tutorial_app.rst:57
+#: ../../tutorial_app.rst:56
msgid "Install Bottle"
msgstr ""
# 323c7573c5cf4e96b73bfe992fe3bdd5
-#: ../../tutorial_app.rst:58
+#: ../../tutorial_app.rst:57
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 "
@@ -150,19 +139,19 @@ msgid ""
msgstr ""
# 38fd6a2012d04c1b9be6bdd68f34cf31
-#: ../../tutorial_app.rst:60
+#: ../../tutorial_app.rst:59
msgid ""
"You can either manually install Bottle or use Python's easy_install: "
"``easy_install bottle``"
msgstr ""
# 3162870d3c224e6395b2064677707e29
-#: ../../tutorial_app.rst:64
+#: ../../tutorial_app.rst:63
msgid "Further Software Necessities"
msgstr ""
# a8acdab527874172b66f97e978090452
-#: ../../tutorial_app.rst:65
+#: ../../tutorial_app.rst:64
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 "
@@ -171,12 +160,12 @@ msgid ""
msgstr ""
# 5ebf50e8b9e343149a7cae5df8a5b8a9
-#: ../../tutorial_app.rst:68
+#: ../../tutorial_app.rst:67
msgid "Create An SQL Database"
msgstr ""
# d2fd8bce01ff4b49b072742bc8bf4efd
-#: ../../tutorial_app.rst:69
+#: ../../tutorial_app.rst:68
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 "
@@ -184,7 +173,7 @@ msgid ""
msgstr ""
# 80e3dd4603d64d20936897ca27e64079
-#: ../../tutorial_app.rst:80
+#: ../../tutorial_app.rst:79
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 "
@@ -195,12 +184,12 @@ msgid ""
msgstr ""
# d159048bac854baa8f2e2d8fb514101f
-#: ../../tutorial_app.rst:83
+#: ../../tutorial_app.rst:82
msgid "Using Bottle for a Web-Based ToDo List"
msgstr ""
# c0c75d7116c046d19c8cf655cf8649ef
-#: ../../tutorial_app.rst:85
+#: ../../tutorial_app.rst:84
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: "
@@ -208,12 +197,12 @@ msgid ""
msgstr ""
# cfc50ffc90be450d9c2dfbcf26638d44
-#: ../../tutorial_app.rst:89
+#: ../../tutorial_app.rst:88
msgid "Understanding routes"
msgstr ""
# 2133263cafaa4e5bbc03445617f894e4
-#: ../../tutorial_app.rst:90
+#: ../../tutorial_app.rst:89
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 "
@@ -225,19 +214,19 @@ msgid ""
msgstr ""
# 09a67a89134847e7bc1a568f2689d98c
-#: ../../tutorial_app.rst:94
+#: ../../tutorial_app.rst:93
msgid "First Step - Showing All Open Items"
msgstr ""
# f8998829a783402aba5dcbc0db9f036d
-#: ../../tutorial_app.rst:95
+#: ../../tutorial_app.rst:94
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 ""
# 250dcd12f8144521a013bb8ce3a9e66d
-#: ../../tutorial_app.rst:110
+#: ../../tutorial_app.rst:109
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 "
@@ -245,7 +234,7 @@ msgid ""
msgstr ""
# 80e4f2e371164060af1fc52879714e0d
-#: ../../tutorial_app.rst:112
+#: ../../tutorial_app.rst:111
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 "
@@ -262,21 +251,21 @@ msgid ""
msgstr ""
# 949260525cbb4b22ae9bd78ef51dc769
-#: ../../tutorial_app.rst:114
+#: ../../tutorial_app.rst:113
msgid ""
"Actually you can bind more than one route to a function. So the following "
"code::"
msgstr ""
# 37635b93f1b24a1eb0de5d0cd716c8ef
-#: ../../tutorial_app.rst:121
+#: ../../tutorial_app.rst:120
msgid ""
"will work fine, too. What will not work is to bind one route to more than "
"one function."
msgstr ""
# 8dd9510ab58743608f1476fa18c00e3a
-#: ../../tutorial_app.rst:123
+#: ../../tutorial_app.rst:122
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`` "
@@ -286,7 +275,7 @@ msgid ""
msgstr ""
# 1c6f2badbbaa4a889f92abadb1e867f8
-#: ../../tutorial_app.rst:125
+#: ../../tutorial_app.rst:124
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 "
@@ -297,7 +286,7 @@ msgid ""
msgstr ""
# a9672e081d5a48399fed00c5255c1a72
-#: ../../tutorial_app.rst:129
+#: ../../tutorial_app.rst:128
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 "
@@ -306,26 +295,26 @@ msgid ""
msgstr ""
# 608cf6d9a1654fe5a6fab91b23fd2cfd
-#: ../../tutorial_app.rst:131
+#: ../../tutorial_app.rst:130
msgid ""
"Actually, the output is not really exciting nor nice to read. It is the raw "
"result returned from the SQL query."
msgstr ""
# 2da4a4e356b947228db82346f61d8513
-#: ../../tutorial_app.rst:133
+#: ../../tutorial_app.rst:132
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 ""
# c878cf980fd041838afa5b163043d70d
-#: ../../tutorial_app.rst:137
+#: ../../tutorial_app.rst:136
msgid "Debugging and Auto-Reload"
msgstr ""
# 7f189493f07e49ebbd3cb1272f5af802
-#: ../../tutorial_app.rst:138
+#: ../../tutorial_app.rst:137
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"
@@ -335,7 +324,7 @@ msgid ""
msgstr ""
# f48dc1811ede406bbe01e24d8c11b3dc
-#: ../../tutorial_app.rst:146
+#: ../../tutorial_app.rst:145
msgid ""
"By enabling \"debug\", you will get a full stacktrace of the Python "
"interpreter, which usually contains useful information for finding bugs. "
@@ -344,21 +333,21 @@ msgid ""
msgstr ""
# c2e8212bf85b4c93a89c6aa66e90fd33
-#: ../../tutorial_app.rst:150
+#: ../../tutorial_app.rst:149
msgid ""
"That ``debug(True)`` is supposed to be used for development only, it should "
"*not* be used in production environments."
msgstr ""
# 4debc3d4feac40c0ad02ce912e8025f6
-#: ../../tutorial_app.rst:154
+#: ../../tutorial_app.rst:153
msgid ""
"Another quite nice feature is auto-reloading, which is enabled by modifying "
"the ``run()`` statement to"
msgstr ""
# 9d83b38b4ce641208e4bfad71d820297
-#: ../../tutorial_app.rst:160
+#: ../../tutorial_app.rst:159
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 "
@@ -366,26 +355,26 @@ msgid ""
msgstr ""
# 04174caac60d412e9a935ca50ea3e4f2
-#: ../../tutorial_app.rst:162
+#: ../../tutorial_app.rst:161
msgid ""
"Again, the feature is mainly supposed to be used while developing, not on "
"production systems."
msgstr ""
# f83ff4d20ae94e079ed0f6b3922bdecf
-#: ../../tutorial_app.rst:166
+#: ../../tutorial_app.rst:165
msgid "Bottle Template To Format The Output"
msgstr ""
# 5e38d2a99bbe4727bbd64ee36e50cb21
-#: ../../tutorial_app.rst:167
+#: ../../tutorial_app.rst:166
msgid ""
"Now let's have a look at casting the output of the script into a proper "
"format."
msgstr ""
# f18d21572ffe4b1c80de83baa551f9a1
-#: ../../tutorial_app.rst:169
+#: ../../tutorial_app.rst:168
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."
@@ -394,7 +383,7 @@ msgid ""
msgstr ""
# 9bdd3397438a45d6af4bf77d7e3ef7bb
-#: ../../tutorial_app.rst:171
+#: ../../tutorial_app.rst:170
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 "
@@ -405,7 +394,7 @@ msgid ""
msgstr ""
# 1da6791dbbfb47c8ba8900963278c68c
-#: ../../tutorial_app.rst:173
+#: ../../tutorial_app.rst:172
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 "
@@ -414,12 +403,12 @@ msgid ""
msgstr ""
# 69b9599726f948f28281362d45b0b5ab
-#: ../../tutorial_app.rst:175
+#: ../../tutorial_app.rst:174
msgid "To include the template in our example, just add the following lines::"
msgstr ""
# 83727486f55e486580ef67ac84326ba1
-#: ../../tutorial_app.rst:185
+#: ../../tutorial_app.rst:184
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 "
@@ -430,39 +419,21 @@ msgid ""
"value to a template."
msgstr ""
-# ddd2dc9245cd4382bdba83c160d67f50
-#: ../../tutorial_app.rst:187
-msgid ""
-"Templates always return a list of strings, thus there is no need to convert "
-"anything. Of course, we can save one line of code by writing ``return "
-"template('make_table', rows=result)``, which gives exactly the same result "
-"as above."
-msgstr ""
-
# 245e095b39624770bff7a1804d4aeef5
-#: ../../tutorial_app.rst:189
+#: ../../tutorial_app.rst:188
msgid ""
"Now it is time to write the corresponding template, which looks like this::"
msgstr ""
# 344d4a02795f45448e56957a65be68a7
-#: ../../tutorial_app.rst:203
+#: ../../tutorial_app.rst:202
msgid ""
"Save the code as ``make_table.tpl`` in the same directory where ``todo.py`` "
"is stored."
msgstr ""
-# 132c593d2a7e47a79f5b442f0c279048
-#: ../../tutorial_app.rst:205
-msgid ""
-"Let's have a look at the code: every line starting with % is interpreted as "
-"Python code. Please note that, of course, only valid Python statements are "
-"allowed, otherwise the template will raise an exception, just as any other "
-"Python code. The other lines are plain HTML markup."
-msgstr ""
-
# 65600aefddd6457e9ac6a0f45378b8dd
-#: ../../tutorial_app.rst:207
+#: ../../tutorial_app.rst:206
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 "
@@ -474,29 +445,20 @@ msgid ""
msgstr ""
# 4f0d03650e8940b0a8073235a7e128e0
-#: ../../tutorial_app.rst:209
+#: ../../tutorial_app.rst:208
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 ""
-# ac6e87ac4ddc44e9a485333a01301d4c
-#: ../../tutorial_app.rst:211
-msgid ""
-"Run the script again and look at the output. Still not really nice, but at "
-"least more readable than the list of tuples. Of course, you can spice-up the"
-" very simple HTML markup above, e.g. by using in-line styles to get a better"
-" looking output."
-msgstr ""
-
# a5c6f7451873476e89fd19086344c528
-#: ../../tutorial_app.rst:215
+#: ../../tutorial_app.rst:214
msgid "Using GET and POST Values"
msgstr ""
# 3faa535f68984a81974791acafc48337
-#: ../../tutorial_app.rst:216
+#: ../../tutorial_app.rst:215
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 "
@@ -504,14 +466,14 @@ msgid ""
msgstr ""
# fedb9e616f9948559641cf9657d62ee4
-#: ../../tutorial_app.rst:218
+#: ../../tutorial_app.rst:217
msgid ""
"To do so, we first add a new route to our script and tell the route that it "
"should get GET data::"
msgstr ""
# 58b6c44dac2845df8ac56bebd2b1cd57
-#: ../../tutorial_app.rst:241
+#: ../../tutorial_app.rst:240
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 "
@@ -522,7 +484,7 @@ msgid ""
msgstr ""
# 801e074e30db4dc4bc349513a61f5077
-#: ../../tutorial_app.rst:243
+#: ../../tutorial_app.rst:242
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"
@@ -530,7 +492,7 @@ msgid ""
msgstr ""
# b76690258b9b444a8d0902d3bdf18b32
-#: ../../tutorial_app.rst:245
+#: ../../tutorial_app.rst:244
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 "
@@ -538,44 +500,44 @@ msgid ""
msgstr ""
# 6ba4d2f7081c4d04aadfddc60775a132
-#: ../../tutorial_app.rst:247
+#: ../../tutorial_app.rst:246
msgid "The code needs to be extended to::"
msgstr ""
# 378a91f2a7ec4a9d84e2a863a97f291b
-#: ../../tutorial_app.rst:270
+#: ../../tutorial_app.rst:269
msgid "``new_task.tpl`` looks like this::"
msgstr ""
# 458d5b70f1384674b50b96da7a1bd566
-#: ../../tutorial_app.rst:278
+#: ../../tutorial_app.rst:277
msgid "That's all. As you can see, the template is plain HTML this time."
msgstr ""
# e29cae60fbb04718a19f8e2b051825be
-#: ../../tutorial_app.rst:280
+#: ../../tutorial_app.rst:279
msgid "Now we are able to extend our to do list."
msgstr ""
# 4c92aff6f1bf4a838d143c3f205048cd
-#: ../../tutorial_app.rst:282
+#: ../../tutorial_app.rst:281
msgid ""
"By the way, if you prefer to use POST data: this works exactly the same way,"
" just use ``request.POST.get()`` instead."
msgstr ""
# bf6d213fabb44ab6b49ac4cef46f68bc
-#: ../../tutorial_app.rst:286
+#: ../../tutorial_app.rst:285
msgid "Editing Existing Items"
msgstr ""
# 53ba07091c2b4c9fbe6050866bca3477
-#: ../../tutorial_app.rst:287
+#: ../../tutorial_app.rst:286
msgid "The last point to do is to enable editing of existing items."
msgstr ""
# 6e63b1fd2fae40e2a478898254a82e0e
-#: ../../tutorial_app.rst:289
+#: ../../tutorial_app.rst:288
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 "
@@ -583,12 +545,12 @@ msgid ""
msgstr ""
# 7c5962f652414c69b78b1b5433bb6aa1
-#: ../../tutorial_app.rst:291
+#: ../../tutorial_app.rst:290
msgid "The basic statement for a dynamic route looks like this::"
msgstr ""
# 563726379580431a958cf4aeefccda02
-#: ../../tutorial_app.rst:295
+#: ../../tutorial_app.rst:294
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 "
@@ -596,101 +558,45 @@ msgid ""
"data can be processed within the function."
msgstr ""
-# f4ed2ede06f84dcaac73e32a2213cd23
-#: ../../tutorial_app.rst:297
-msgid ""
-"For our ToDo list, we will create a route ``@route('/edit/:no)``, where "
-"``no`` is the id of the item to edit."
-msgstr ""
-
# 7a548d38deff451b80addadf1d9e4689
-#: ../../tutorial_app.rst:299
+#: ../../tutorial_app.rst:298
msgid "The code looks like this::"
msgstr ""
-# 6079f47bddf841ea8670552d67099ffc
-#: ../../tutorial_app.rst:327
-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 "
-"dynamic route ``:no``, which here passes the number to the corresponding "
-"function. As you can see, ``no`` is used within the function to access the "
-"right row of data within the database."
-msgstr ""
-
# 2436e79948284ae68febf16bef7d035c
-#: ../../tutorial_app.rst:329
+#: ../../tutorial_app.rst:328
msgid ""
"The template ``edit_task.tpl`` called within the function looks like this::"
msgstr ""
# e2da6846d9b24152887b4cf31824d068
-#: ../../tutorial_app.rst:344
+#: ../../tutorial_app.rst:343
msgid ""
"Again, this template is a mix of Python statements and HTML, as already "
"explained above."
msgstr ""
# a04a1bb33dd842e8891a9077dba29ab5
-#: ../../tutorial_app.rst:346
+#: ../../tutorial_app.rst:345
msgid ""
"A last word on dynamic routes: you can even use a regular expression for a "
"dynamic route, as demonstrated later."
msgstr ""
-# c192f12671d544f0bb801c43059bf3f4
-#: ../../tutorial_app.rst:350
-msgid "Validating Dynamic Routes"
-msgstr ""
-
-# 26b2d47fe2924821a270ebf6647c8eaa
-#: ../../tutorial_app.rst:351
-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 ""
-
-# 906ad824bd914a7190e3b28d3252bdf8
-#: ../../tutorial_app.rst:353
-msgid ""
-"For those cases, Bottle offers the ``@validate`` decorator, which validates "
-"the \"input\" prior to passing it to the function. In order to apply the "
-"validator, extend the code as follows::"
-msgstr ""
-
-# 338847d5600241309dc930fe7a52ef38
-#: ../../tutorial_app.rst:362
-msgid ""
-"At first, we imported ``validate`` from the Bottle framework, than we apply "
-"the @validate-decorator. Right here, we validate if ``no`` is an integer. "
-"Basically, the validation works with all types of data like floats, lists "
-"etc."
-msgstr ""
-
-# 2529e4f60ecd4b4e97901225a54873e6
-#: ../../tutorial_app.rst:364
-msgid ""
-"Save the code and call the page again using a \"403 forbidden\" value for "
-"``:no``, e.g. a float. You will receive not an exception, but a \"403 - "
-"Forbidden\" error, saying that an integer was expected."
-msgstr ""
-
# 20e213be407a4e1aa2e1f25370925935
-#: ../../tutorial_app.rst:367
+#: ../../tutorial_app.rst:348
msgid "Dynamic Routes Using Regular Expressions"
msgstr ""
# 83e84f03b20442b1b29b4306c9e7bb4d
-#: ../../tutorial_app.rst:368
+#: ../../tutorial_app.rst:349
msgid ""
"Bottle can also handle dynamic routes, where the \"dynamic part\" of the "
"route can be a regular expression."
msgstr ""
# 1508b1d60d23479b850240488510c320
-#: ../../tutorial_app.rst:370
+#: ../../tutorial_app.rst:351
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. "
@@ -700,34 +606,17 @@ msgid ""
msgstr ""
# 4e7c0accdce6407397dc719065fdc4b7
-#: ../../tutorial_app.rst:372
+#: ../../tutorial_app.rst:353
msgid "As said above, the solution is a regular expression::"
msgstr ""
-# be69ea5d4807493fa1df30dffaeb51c8
-#: ../../tutorial_app.rst:386
-msgid ""
-"Of course, 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_#[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."
-msgstr ""
-
# c272a28cca8a4a7b951d587bb10c0d6d
-#: ../../tutorial_app.rst:390
+#: ../../tutorial_app.rst:371
msgid "Returning Static Files"
msgstr ""
# d694d1614af6452db45b5c0afc419320
-#: ../../tutorial_app.rst:391
+#: ../../tutorial_app.rst:372
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 "
@@ -736,7 +625,7 @@ msgid ""
msgstr ""
# 9f2ab790ac7847ecb7498c3e33a80d5b
-#: ../../tutorial_app.rst:399
+#: ../../tutorial_app.rst:380
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`` "
@@ -750,12 +639,12 @@ msgid ""
msgstr ""
# f8401fbf345741f58fb7062d0ca848fb
-#: ../../tutorial_app.rst:403
+#: ../../tutorial_app.rst:384
msgid "Returning JSON Data"
msgstr ""
# c461bd6b460249fbba4fd338a7424687
-#: ../../tutorial_app.rst:404
+#: ../../tutorial_app.rst:385
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 "
@@ -766,14 +655,14 @@ msgid ""
msgstr ""
# b2108643c96346f9a7379e079d2227eb
-#: ../../tutorial_app.rst:406
+#: ../../tutorial_app.rst:387
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 ""
# 3401f22d517e44858dcde5e280fc5f3d
-#: ../../tutorial_app.rst:421
+#: ../../tutorial_app.rst:402
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 "
@@ -783,12 +672,12 @@ msgid ""
msgstr ""
# f1779714263f42f4a2b5c649435a384f
-#: ../../tutorial_app.rst:426
+#: ../../tutorial_app.rst:407
msgid "Catching Errors"
msgstr ""
# d7605a6e415c4e7084b50a9204a0c21b
-#: ../../tutorial_app.rst:427
+#: ../../tutorial_app.rst:408
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"
@@ -796,12 +685,12 @@ msgid ""
msgstr ""
# a1d9e364842042dc9725eb50ee3a2050
-#: ../../tutorial_app.rst:429
+#: ../../tutorial_app.rst:410
msgid "In our case, we want to catch a 403 error. The code is as follows::"
msgstr ""
# 39fb208b57d74801bb571819763267ae
-#: ../../tutorial_app.rst:437
+#: ../../tutorial_app.rst:418
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 "
@@ -811,24 +700,24 @@ msgid ""
msgstr ""
# ef35bafad5f049c98b3a121d0f2cff93
-#: ../../tutorial_app.rst:439
+#: ../../tutorial_app.rst:420
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 ""
# b1f1f0e41e5e40e6b56144463f58b712
-#: ../../tutorial_app.rst:446
+#: ../../tutorial_app.rst:427
msgid "works fine, the following one as well::"
msgstr ""
# a921f886d17e4fb5a4a66650ffb5cbfb
-#: ../../tutorial_app.rst:458
+#: ../../tutorial_app.rst:439
msgid "Summary"
msgstr ""
# 19937842ce9e4b669bee2242caaa8ac8
-#: ../../tutorial_app.rst:459
+#: ../../tutorial_app.rst:440
msgid ""
"After going through all the sections above, you should have a brief "
"understanding how the Bottle WSGI framework works. Furthermore you have all "
@@ -836,7 +725,7 @@ msgid ""
msgstr ""
# b4a13e69fb084d6bb29fdece9348c900
-#: ../../tutorial_app.rst:461
+#: ../../tutorial_app.rst:442
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 "
@@ -845,12 +734,12 @@ msgid ""
msgstr ""
# 6bcd3a571517430d9bfc428f1ec04d95
-#: ../../tutorial_app.rst:464
+#: ../../tutorial_app.rst:445
msgid "Server Setup"
msgstr ""
# 600b07088f124c3ab26d497d06d3abd9
-#: ../../tutorial_app.rst:466
+#: ../../tutorial_app.rst:447
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 "
@@ -860,12 +749,12 @@ msgid ""
msgstr ""
# c732e3117973498aae3204f8a3906e90
-#: ../../tutorial_app.rst:470
+#: ../../tutorial_app.rst:451
msgid "Running Bottle on a different port and IP"
msgstr ""
# 9d334b071d5140c2bb8f841b9fdc6e33
-#: ../../tutorial_app.rst:471
+#: ../../tutorial_app.rst:452
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 "
@@ -874,41 +763,36 @@ msgid ""
msgstr ""
# e191772efca94637bfcb772084e5da2d
-#: ../../tutorial_app.rst:473
+#: ../../tutorial_app.rst:454
msgid ""
"To change the port, just add ``port=portnumber`` to the run command. So, for"
" example::"
msgstr ""
# afaf7cae0c8641e2adc3aa59c2ca5d31
-#: ../../tutorial_app.rst:477
+#: ../../tutorial_app.rst:458
msgid "would make Bottle listen to port 80."
msgstr ""
# 43a7a438c79e4b60b93641051842774c
-#: ../../tutorial_app.rst:479
+#: ../../tutorial_app.rst:460
msgid "To change the IP address where Bottle is listening::"
msgstr ""
-# ce04b54f665a43cba5c7366edbc705e6
-#: ../../tutorial_app.rst:483
-msgid "Of course, both parameters can be combined, like::"
-msgstr ""
-
# a7125b0e1b884a698f70b56353070f7f
-#: ../../tutorial_app.rst:487
+#: ../../tutorial_app.rst:468
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 ""
# d5ca3b4bd6f94ed0af1b7a1798196b75
-#: ../../tutorial_app.rst:491
+#: ../../tutorial_app.rst:472
msgid "Running Bottle with a different server"
msgstr ""
# 2407e60d084b42d1ae196d8cb5fdad17
-#: ../../tutorial_app.rst:492
+#: ../../tutorial_app.rst:473
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"
@@ -917,7 +801,7 @@ msgid ""
msgstr ""
# 20a0554dffb84078bcf589deecc0e74f
-#: ../../tutorial_app.rst:494
+#: ../../tutorial_app.rst:475
msgid ""
"But Bottle has already various adapters to multi-threaded servers on board, "
"which perform better on higher load. Bottle supports Cherrypy_, Fapws3_, "
@@ -925,26 +809,26 @@ msgid ""
msgstr ""
# 44e8f4dde7b142188f8de625e3275dca
-#: ../../tutorial_app.rst:496
+#: ../../tutorial_app.rst:477
msgid ""
"If you want to run for example Bottle with the Paste server, use the "
"following code::"
msgstr ""
# 39e2e4ef1dfd4210a1b4ee13640c663d
-#: ../../tutorial_app.rst:502
+#: ../../tutorial_app.rst:483
msgid ""
"This works exactly the same way with ``FlupServer``, ``CherryPyServer`` and "
"``FapwsServer``."
msgstr ""
# 10e51eb76e96487680966b34b3d78925
-#: ../../tutorial_app.rst:506
+#: ../../tutorial_app.rst:487
msgid "Running Bottle on Apache with mod_wsgi"
msgstr ""
# 1b35a4275d4d498eaa2c007ada3f6447
-#: ../../tutorial_app.rst:507
+#: ../../tutorial_app.rst:488
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 "
@@ -952,7 +836,7 @@ msgid ""
msgstr ""
# 3098e37da6c34962a7501188872d2c71
-#: ../../tutorial_app.rst:509
+#: ../../tutorial_app.rst:490
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 "
@@ -960,14 +844,14 @@ msgid ""
msgstr ""
# ff893b856d3240eb904a84ce1234f31d
-#: ../../tutorial_app.rst:511
+#: ../../tutorial_app.rst:492
msgid ""
"Bottle brings an adapter for mod_wsgi with it, so serving your application "
"is an easy task."
msgstr ""
# e109dc5e96a940a1bc487b8b3c403df1
-#: ../../tutorial_app.rst:513
+#: ../../tutorial_app.rst:494
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 "
@@ -976,21 +860,21 @@ msgid ""
msgstr ""
# e354eece29b047808c6ed1dfca466c06
-#: ../../tutorial_app.rst:515
+#: ../../tutorial_app.rst:496
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 ""
# e63a26965a8540c6b4b0cabca8a57f85
-#: ../../tutorial_app.rst:517
+#: ../../tutorial_app.rst:498
msgid ""
"After that, create a file called ``adapter.wsgi`` with the following "
"content::"
msgstr ""
# 598ec5a995f34e5ea35b5bec5856f266
-#: ../../tutorial_app.rst:528
+#: ../../tutorial_app.rst:509
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 "
@@ -998,26 +882,26 @@ msgid ""
msgstr ""
# 531c54d24671405e9c5d8b6ae03b8914
-#: ../../tutorial_app.rst:530
+#: ../../tutorial_app.rst:511
msgid ""
"Finally, we need to add a virtual host to the Apache configuration, which "
"looks like this::"
msgstr ""
# 79a25cc3591d44789ca5ed568ec8a6f7
-#: ../../tutorial_app.rst:546
+#: ../../tutorial_app.rst:527
msgid ""
"After restarting the server, your ToDo list should be accessible at "
"``http://www.mypage.com/todo``"
msgstr ""
# 0ba5365842bd459db8a68dcf99d93ea7
-#: ../../tutorial_app.rst:549
+#: ../../tutorial_app.rst:530
msgid "Final Words"
msgstr ""
# 469906452f3840e7a3a147819407289d
-#: ../../tutorial_app.rst:551
+#: ../../tutorial_app.rst:532
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 "
@@ -1026,7 +910,7 @@ msgid ""
msgstr ""
# 804e87d1839843c3935a81af70f5f73a
-#: ../../tutorial_app.rst:553
+#: ../../tutorial_app.rst:534
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"
@@ -1037,33 +921,184 @@ msgid ""
msgstr ""
# 12c13b79a5b940778f41e60b0e2bd8a7
-#: ../../tutorial_app.rst:556
+#: ../../tutorial_app.rst:537
msgid "Complete Example Listing"
msgstr ""
# d6699331057b4aaaa8602a240b545cfe
-#: ../../tutorial_app.rst:558
+#: ../../tutorial_app.rst:539
msgid ""
"As the ToDo list example was developed piece by piece, here is the complete "
"listing:"
msgstr ""
# 7ed6fe170aab4951bbe7f77b27fbd4a9
-#: ../../tutorial_app.rst:560
+#: ../../tutorial_app.rst:541
msgid "Main code for the application ``todo.py``::"
msgstr ""
# 882748851951490399934b8bb9f8f899
-#: ../../tutorial_app.rst:675
+#: ../../tutorial_app.rst:655
msgid "Template ``make_table.tpl``::"
msgstr ""
# 029a4499993b44a5ad30ab5d599fae5c
-#: ../../tutorial_app.rst:689
+#: ../../tutorial_app.rst:669
msgid "Template ``edit_task.tpl``::"
msgstr ""
# b9c632018a6d4a3d9ef7d266fb621925
-#: ../../tutorial_app.rst:704
+#: ../../tutorial_app.rst:684
msgid "Template ``new_task.tpl``::"
msgstr ""
+
+#: ../../tutorial_app.rst:48
+msgid "page for editing items: ``http://localhost:8080/edit/<no:int>``"
+msgstr ""
+
+#: ../../tutorial_app.rst:186
+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 "
+"template('make_table', rows=result)``, which gives exactly the same result "
+"as above."
+msgstr ""
+
+#: ../../tutorial_app.rst:204
+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 "
+"are allowed. The template will raise exceptions, just as any other Python "
+"code would. The other lines are plain HTML markup."
+msgstr ""
+
+#: ../../tutorial_app.rst:210
+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 "
+"simple HTML markup above, e.g. by using in-line styles to get a better "
+"looking output."
+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:326
+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 "
+"dynamic route ``<no:int>``, which here passes the number to the "
+"corresponding function. As you can see, ``no`` is integer ID and used within"
+" the function to access the right row of data within the database."
+msgstr ""
+
+#: ../../tutorial_app.rst:367
+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."
+msgstr ""
+
+#: ../../tutorial_app.rst:464
+msgid "If needed, both parameters can be combined, like::"
+msgstr ""
+
+#~ msgid "page for editing items: ``http://localhost:8080/edit/:no``"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "validating data assigned by dynamic routes with the @validate decorator"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "Templates always return a list of strings, thus there is no need to convert "
+#~ "anything. Of course, we can save one line of code by writing ``return "
+#~ "template('make_table', rows=result)``, which gives exactly the same result "
+#~ "as above."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "Let's have a look at the code: every line starting with % is interpreted as "
+#~ "Python code. Please note that, of course, only valid Python statements are "
+#~ "allowed, otherwise the template will raise an exception, just as any other "
+#~ "Python code. The other lines are plain HTML markup."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "Run the script again and look at the output. Still not really nice, but at "
+#~ "least more readable than the list of tuples. Of course, you can spice-up the"
+#~ " very simple HTML markup above, e.g. by using in-line styles to get a better"
+#~ " looking output."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "For our ToDo list, we will create a route ``@route('/edit/:no)``, where "
+#~ "``no`` is the id of the item to edit."
+#~ msgstr ""
+
+#~ 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 "
+#~ "dynamic route ``:no``, which here passes the number to the corresponding "
+#~ "function. As you can see, ``no`` is used within the function to access the "
+#~ "right row of data within the database."
+#~ msgstr ""
+
+#~ msgid "Validating Dynamic Routes"
+#~ msgstr ""
+
+#~ 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 ""
+
+#~ msgid ""
+#~ "For those cases, Bottle offers the ``@validate`` decorator, which validates "
+#~ "the \"input\" prior to passing it to the function. In order to apply the "
+#~ "validator, extend the code as follows::"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "At first, we imported ``validate`` from the Bottle framework, than we apply "
+#~ "the @validate-decorator. Right here, we validate if ``no`` is an integer. "
+#~ "Basically, the validation works with all types of data like floats, lists "
+#~ "etc."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "Save the code and call the page again using a \"403 forbidden\" value for "
+#~ "``:no``, e.g. a float. You will receive not an exception, but a \"403 - "
+#~ "Forbidden\" error, saying that an integer was expected."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "Of course, 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_#[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."
+#~ msgstr ""
+
+#~ msgid "Of course, both parameters can be combined, like::"
+#~ msgstr ""