diff options
Diffstat (limited to 'docs/_locale/pt_BR/LC_MESSAGES')
-rw-r--r-- | docs/_locale/pt_BR/LC_MESSAGES/api.po | 121 | ||||
-rw-r--r-- | docs/_locale/pt_BR/LC_MESSAGES/configuration.po | 34 | ||||
-rw-r--r-- | docs/_locale/pt_BR/LC_MESSAGES/deployment.po | 37 | ||||
-rw-r--r-- | docs/_locale/pt_BR/LC_MESSAGES/development.po | 440 | ||||
-rw-r--r-- | docs/_locale/pt_BR/LC_MESSAGES/index.po | 94 | ||||
-rw-r--r-- | docs/_locale/pt_BR/LC_MESSAGES/plugindev.po | 23 | ||||
-rw-r--r-- | docs/_locale/pt_BR/LC_MESSAGES/plugins/index.po | 182 | ||||
-rw-r--r-- | docs/_locale/pt_BR/LC_MESSAGES/recipes.po | 72 | ||||
-rw-r--r-- | docs/_locale/pt_BR/LC_MESSAGES/stpl.po | 14 | ||||
-rw-r--r-- | docs/_locale/pt_BR/LC_MESSAGES/tutorial.po | 639 | ||||
-rw-r--r-- | docs/_locale/pt_BR/LC_MESSAGES/tutorial_app.po | 499 |
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 "" |