# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2009-2012, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: Bottle 0.12-dev\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-11-09 18:23\n"
"PO-Revision-Date: 2012-11-09 16:46+0800\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

# e79a5ecbd44d4b95b285c0c15aa604b5
#: ../../deployment.rst:27
msgid "Deployment"
msgstr "部署"

# 90d5d3c767a840e98624f37fe00e495a
#: ../../deployment.rst:29
msgid ""
"The bottle :func:`run` function, when called without any parameters, starts "
"a local development server on port 8080. You can access and test your "
"application via http://localhost:8080/ if you are on the same host."
msgstr ""
"不添加任何参数，直接运行Bottle的 :func:`run` 函数，会启动一个本地的开发服务"
"器，监听8080端口。你可在同一部主机上访问http://localhost:8080/来测试你的应"
"用。"

# be20533847e944aba27d3501a407c78b
#: ../../deployment.rst:31
msgid ""
"To get your application available to the outside world, specify the IP of "
"the interface the server should listen to (e.g. ``run(host='192.168.0.1')``) "
"or let the server listen to all interfaces at once (e.g. ``run"
"(host='0.0.0.0')``). The listening port can be changed in a similar way, but "
"you need root or admin rights to choose a port below 1024. Port 80 is the "
"standard for HTTP servers::"
msgstr ""
"可更改服务器监听的IP地址(例如： ``run(host='192.168.0.1')`` )，来让应用对其可"
"访问，或者让服务器接受所有地址的请求(例如： ``run(host='0.0.0.0')`` )。可通过"
"类似的方法改变服务器监听的端口，但如果你选择了一个小于1024的端口，则需要root"
"权限。HTTP服务器的标准端口是80端口::"

# 69e830c825454c2fbf350c56a6576300
#: ../../deployment.rst:36
msgid "Server Options"
msgstr "可选服务器"

# ef9d03fa6f634c1d858b1ba8e82f0bf8
#: ../../deployment.rst:38
msgid ""
"The built-in default server is based on `wsgiref WSGIServer <http://docs."
"python.org/library/wsgiref.html#module-wsgiref.simple_server>`_. This non-"
"threading HTTP server is perfectly fine for development and early "
"production, but may become a performance bottleneck when server load "
"increases. There are three ways to eliminate this bottleneck:"
msgstr ""
"内置的服务器基于 `wsgiref WSGIServer <http://docs.python.org/library/wsgiref."
"html#module-wsgiref.simple_server>`_ 。这个单线程的HTTP服务器很适合用于开发，"
"但当服务器的负载上升的时候，会成为一个性能瓶颈。有三种方法可消除这一瓶颈："

# ed2cadfab77a43b58b41257af4e1d365
#: ../../deployment.rst:40
msgid "Use a different server that is either multi-threaded or asynchronous."
msgstr "使用多线程或异步的服务器"

# 45dbb890ad694ccab24ebebe15d0272e
#: ../../deployment.rst:41
msgid ""
"Start multiple server processes and spread the load with a load-balancer."
msgstr "运行多个服务器，使用负载均衡"

# 6d7e312467b649c39d095bce6eec1751
#: ../../deployment.rst:42
msgid "Do both."
msgstr "同时使用上面两种方法"

# 1fa254c00fa4404a8ad6a599375d0b8c
#: ../../deployment.rst:44
msgid ""
"**Multi-threaded** servers are the 'classic' way to do it. They are very "
"robust, reasonably fast and easy to manage. As a drawback, they can only "
"handle a limited number of connections at the same time and utilize only one "
"CPU core due to the \"Global Interpreter Lock\" (GIL). This does not hurt "
"most applications, they are waiting for network IO most of the time anyway, "
"but may slow down CPU intensive tasks (e.g. image processing)."
msgstr ""
"**多线程** 服务器是经典的解决方法。它们非常鲁棒(稳定)，快速和易于管理。但它们"
"也有缺点，同时只能处理固定数量的请求，因为全局解释器锁(GIL)的存在，所有只能利"
"用一个CPU核心。对于大部分的应用而言，这无伤大雅，也许它们大部分时间都在等待网"
"络IO。但对于一些比较耗CPU的应用(例如图像处理)，就要考虑性能问题了。"

# 41ca69b13f1c4182905d274e18a5b298
#: ../../deployment.rst:46
msgid ""
"**Asynchronous** servers are very fast, can handle a virtually unlimited "
"number of concurrent connections and are easy to manage, but can get a bit "
"tricky. To take full advantage of their potential, you need to design your "
"application accordingly and understand the concepts of the specific server."
msgstr ""
"**异步** 服务器非常快，同时处理的请求数无上限，也方便管理。为了充分利用它们的"
"潜力，你需要根据异步的原理来设计你的应用，了解它们的工作机制。"

# 6b274d7997da4dbab0ad352a0b6af597
#: ../../deployment.rst:48
msgid ""
"**Multi-processing** (forking) servers are not limited by the GIL and "
"utilize more than one CPU core, but make communication between server "
"instances more expensive. You need a database or external message query to "
"share state between processes, or design your application so that it does "
"not need any shared state. The setup is also a bit more complicated, but "
"there are good tutorials available."
msgstr ""
"**多进程** (forking) 服务器就没有受到GIL的限制，能利用多个CPU核心，但服务器实"
"例之间的交流代价比较高昂。你需要一个数据库或消息队列来在进程之间共享状态，或"
"将你的应用设计成根本不需要共享状态。多进程服务器的安装也比较负责，但已经有很"
"多好的教程了。"

# 7950fbc4dbe849af9b6e8fcbc7fbad8c
#: ../../deployment.rst:51
msgid "Switching the Server Backend"
msgstr "更改服务器后端"

# 5e77521d11344f92a28053e59281eff6
#: ../../deployment.rst:53
msgid ""
"The easiest way to increase performance is to install a multi-threaded "
"server library like paste_ or cherrypy_ and tell Bottle to use that instead "
"of the single-threaded server::"
msgstr ""
"提高性能最简单的办法，是安装一个多线程的服务器库，例如 paste_ 和 cherrypy_ ，"
"然后告诉Bottle使用它们。"

# 06a336e02f474466b2ced7bc0d1f7847
#: ../../deployment.rst:57
msgid ""
"Bottle ships with a lot of ready-to-use adapters for the most common WSGI "
"servers and automates the setup process. Here is an incomplete list:"
msgstr ""
"Bottle为很多常见的WSGI服务器都编写了适配器，能自动化安装过程。下面是一个不完"
"整的清单:"

# 1aa1ab9777c84fa3b40112b866976d2c
#: ../../deployment.rst:60
msgid "Name"
msgstr "名称"

# a9840552bf3248acb79506092785a343
#: ../../deployment.rst:60
msgid "Homepage"
msgstr "主页"

# 2b35d4918e0f4386aa7ad7b857486c67
#: ../../deployment.rst:60
msgid "Description"
msgstr "描述"

# d5996a4c22e448af81100e2762b8e852
#: ../../deployment.rst:62
msgid "cgi"
msgstr ""

# da5c8bd6130b4a2ab82cc8ed2c66a17c
#: ../../deployment.rst:62
msgid "Run as CGI script"
msgstr ""

# 611871b28f1349a7811638c538fc3eb1
#: ../../deployment.rst:63
msgid "flup"
msgstr ""

# b6ca7e7cc7d84786b66f3a66b1dac28c
#: ../../deployment.rst:63
msgid "flup_"
msgstr ""

# 8730e1384f3c4ca5bd4ae22a205254b9
#: ../../deployment.rst:63
msgid "Run as FastCGI process"
msgstr ""

# 0618b584d4cc49909da1ba31777c181b
#: ../../deployment.rst:64
msgid "gae"
msgstr ""

# 747662cc00794894970a3ac8ce7e04d3
#: ../../deployment.rst:64
msgid "gae_"
msgstr ""

# 9dc8135f97ba416187e21da3265bf6a6
#: ../../deployment.rst:64
msgid "Helper for Google App Engine deployments"
msgstr "用于Google App Engine"

# 1cfd09034d7e4d7780ec0ada01cc1bc6
#: ../../deployment.rst:65
msgid "wsgiref"
msgstr ""

# f1227078c6fc487bb5ac4b6f0ec36468
#: ../../deployment.rst:65
msgid "wsgiref_"
msgstr ""

# f250f65fdf9b4f9bbc9d6a5955590ed5
#: ../../deployment.rst:65
msgid "Single-threaded default server"
msgstr "默认的单线程服务器"

# 01d364e912d04e3c8e293f5a2e8961b3
#: ../../deployment.rst:66
msgid "cherrypy"
msgstr ""

# fa5d69dde84a42cf835a41d99b6956fb
#: ../../deployment.rst:66
msgid "cherrypy_"
msgstr ""

# 0f31f5406dd342adbfe7fce1412bda34
#: ../../deployment.rst:66
msgid "Multi-threaded and very stable"
msgstr "多线程，稳定"

# 1e7de22115ad4ae69df9b6a8324ab8cd
#: ../../deployment.rst:67
msgid "paste"
msgstr ""

# 2663f8370e1548e48310eda696f6b7a1
#: ../../deployment.rst:67
msgid "paste_"
msgstr ""

# 7799c8e33cc4411fb9c8b3cf5f5cb011
#: ../../deployment.rst:67
msgid "Multi-threaded, stable, tried and tested"
msgstr "多线程，稳定，久经考验，充分测试"

# 1ec1f0afa1944692af933626c83e1e59
#: ../../deployment.rst:68
msgid "rocket"
msgstr ""

# 021f3f12795f4be688799b34b6f56e9d
#: ../../deployment.rst:68
msgid "rocket_"
msgstr ""

# 51b02f23b9a14accbba41e59aacd4bf4
#: ../../deployment.rst:68
msgid "Multi-threaded"
msgstr "多线程"

# e10f6b047c6144c0bfd0543b1e9a8d26
#: ../../deployment.rst:69
msgid "waitress"
msgstr ""

# eaa5c14173e642568041d89317456cda
#: ../../deployment.rst:69
msgid "waitress_"
msgstr ""

# 52a0ea00e1314e85a34af85cc67dc611
#: ../../deployment.rst:69
msgid "Multi-threaded, poweres Pyramid"
msgstr "多线程，源于Pyramid"

# a40591f82b0b4586b8deb5e1cb8958f7
#: ../../deployment.rst:70
msgid "gunicorn"
msgstr ""

# 54bda396687149e38384c16f7e1602cd
#: ../../deployment.rst:70
msgid "gunicorn_"
msgstr ""

# be07f75ddcfa46b39c1c4a012091ed4a
#: ../../deployment.rst:70
msgid "Pre-forked, partly written in C"
msgstr ""

# ccab55aeedef4b9a8b27724b90e9147e
#: ../../deployment.rst:71
msgid "eventlet"
msgstr ""

# c75912557c7443e39686a53a0d50f310
#: ../../deployment.rst:71
msgid "eventlet_"
msgstr ""

# dcd1301f85fc4f508edfb145936a8981
#: ../../deployment.rst:71
msgid "Asynchronous framework with WSGI support."
msgstr "支持WSGI的异步框架"

# e74b58a9d7d54b1b94bbc7a1ffa40195
#: ../../deployment.rst:72
msgid "gevent"
msgstr ""

# 2beea95f00d144f7921a885d8c27539d
#: ../../deployment.rst:72
msgid "gevent_"
msgstr ""

# a80c773e08fa4a8999e1b880e595cdfc
# a2c352eaf5234afea0a8dbbd39c8d95c
#: ../../deployment.rst:72 ../../deployment.rst:73
msgid "Asynchronous (greenlets)"
msgstr "异步 (greenlets)"

# e4239c25b7c243a8a65c3376b6324657
#: ../../deployment.rst:73
msgid "diesel"
msgstr ""

# f1f4d6225de948728236ff63a6061b8b
#: ../../deployment.rst:73
msgid "diesel_"
msgstr ""

# 47bf711ccf4c4bc3a27294ffac85012b
#: ../../deployment.rst:74
msgid "fapws3"
msgstr ""

# 6c2749281ce54842b60dfdd8102f0760
#: ../../deployment.rst:74
msgid "fapws3_"
msgstr ""

# bbd374f295eb4cd5837e348023187fa1
#: ../../deployment.rst:74
msgid "Asynchronous (network side only), written in C"
msgstr "异步 (network side only), written in C"

# 38e55f3ef23b453ca4be59de80a86a58
#: ../../deployment.rst:75
msgid "tornado"
msgstr ""

# b68f024f752143fea2d3551f06535724
#: ../../deployment.rst:75
msgid "tornado_"
msgstr ""

# 127ad8b4a945499b8e03e3eac662e96e
#: ../../deployment.rst:75
msgid "Asynchronous, powers some parts of Facebook"
msgstr "异步，支撑Facebook的部分应用"

# c319318ff0e747249048d1492ff9d468
#: ../../deployment.rst:76
msgid "twisted"
msgstr ""

# 474bfbaf4c4b471ca12ff95d43b72fc5
#: ../../deployment.rst:76
msgid "twisted_"
msgstr ""

# fded1b2c80334bf7b8d62fef6a3cc106
#: ../../deployment.rst:76
msgid "Asynchronous, well tested but... twisted"
msgstr "异步, well tested but... twisted"

# a51d20d8c07a4d6593dd44141d90df6a
#: ../../deployment.rst:77
msgid "meinheld"
msgstr ""

# a5d7d4a87937454c817bd6b4954c780b
#: ../../deployment.rst:77
msgid "meinheld_"
msgstr ""

# 1c4d989fa3aa4dbbbd435c88308f85c3
#: ../../deployment.rst:77
msgid "Asynchronous, partly written in C"
msgstr "异步，部分用C语言编写"

# 9accb12067ce403e958cb544323edc95
#: ../../deployment.rst:78
msgid "bjoern"
msgstr ""

# bef5c69cc89647d19caa34443bf05be2
#: ../../deployment.rst:78
msgid "bjoern_"
msgstr ""

# b3658d3992e94bee930a3c902f320b7c
#: ../../deployment.rst:78
msgid "Asynchronous, very fast and written in C"
msgstr "异步，用C语言编写，非常快"

# 6d5ee7b287ce47199e1eb806df41da12
#: ../../deployment.rst:79
msgid "auto"
msgstr ""

# 06a3e02e1e4449fba32bbc704e180011
#: ../../deployment.rst:79
msgid "Automatically selects an available server adapter"
msgstr "自动选择一个可用的服务器"

# 584162cdf6474670a29f2fcadd147b13
#: ../../deployment.rst:82
msgid "The full list is available through :data:`server_names`."
msgstr "完整的列表在 :data:`server_names` 。"

# cc5a1335e0c64f6399dd070a1f6ef5bd
#: ../../deployment.rst:84
msgid ""
"If there is no adapter for your favorite server or if you need more control "
"over the server setup, you may want to start the server manually. Refer to "
"the server documentation on how to run WSGI applications. Here is an example "
"for paste_::"
msgstr ""
"如果没有适合你的服务器的适配器，或者你需要更多地控制服务器的安装，你也许需要"
"手动启动服务器。可参考你的服务器的文档，看看是如何运行一个WSGI应用。下面是一"
"个使用 paste_ 的例子。"

# 8c6a91e237a24498b5c3223a616e1254
#: ../../deployment.rst:93
msgid "Apache mod_wsgi"
msgstr ""

# a72769ad7e8a42bfa796f3b995a70e4b
#: ../../deployment.rst:95
msgid ""
"Instead of running your own HTTP server from within Bottle, you can attach "
"Bottle applications to an `Apache server <apache>`_ using mod_wsgi_."
msgstr ""
"除了直接在Bottle里面运行HTTP服务器，你也可以将你的应用部署到一个Apache服务器"
"上，使用 mod_wsgi_ 来运行。"

# 935849b733614fc58e5463e5c6ba69bf
#: ../../deployment.rst:97
msgid ""
"All you need is an ``app.wsgi`` file that provides an ``application`` "
"object. This object is used by mod_wsgi to start your application and should "
"be a WSGI-compatible Python callable."
msgstr ""
"你需要的只是提供一个 ``application`` 对象的 ``app.wsgi`` 文件。mod_wsgi会使用"
"这个对象来启动你的应用，这个对象必须是兼容WSGI的 callable对象。"

# 28f009fc7c0f42a39d30b818126dc74d
#: ../../deployment.rst:99
msgid "File ``/var/www/yourapp/app.wsgi``::"
msgstr " ``/var/www/yourapp/app.wsgi`` 文件 "

# a76a11ae64834882baa0ee1d0e2c723d
#: ../../deployment.rst:109
msgid "The Apache configuration may look like this::"
msgstr "Apache的配置"

# 7620c70255014ffe8840ca0709d76c7a
#: ../../deployment.rst:128
msgid "Google AppEngine"
msgstr ""

# d4ace9ef663f42bb9357a450ce95320b
#: ../../deployment.rst:132
msgid ""
"The ``gae`` server adapter is used to run applications on Google App Engine. "
"It works similar to the ``cgi`` adapter in that it does not start a new HTTP "
"server, but prepares and optimizes your application for Google App Engine "
"and makes sure it conforms to their API::"
msgstr ""
"``gae`` 这个服务器适配器可在Google App Engine上运行你的应用。它的工作方式和 "
"``cgi`` 适配器类似，并没有启动一个HTTP服务器，只是针对做了一下准备和优化工"
"作。确保你的应用遵守Google App Engine的API。"

# 7c4fa384b251470eb198fc0f0b1816fe
#: ../../deployment.rst:136
msgid ""
"It is always a good idea to let GAE serve static files directly. Here is "
"example for a working  ``app.yaml``::"
msgstr ""
"直接让GAE来提供静态文件服务总是一个好主意。类似的可工作的 ``app.yaml`` 文件如"
"下。"

# 98b002b7a9b542a19a83b81fe317239d
#: ../../deployment.rst:152
msgid "Load Balancer (Manual Setup)"
msgstr "负载均衡 (手动安装)"

# 442149987ce2410b9d03f1a48248af9c
#: ../../deployment.rst:154
msgid ""
"A single Python process can utilize only one CPU at a time, even if there "
"are more CPU cores available. The trick is to balance the load between "
"multiple independent Python processes to utilize all of your CPU cores."
msgstr ""
"单一的Python进程一次只能使用一个CPU内核，即使CPU是多核的。我们的方法就是在多"
"核CPU的机器上，使用多线程来实现负载均衡。"

# 10fef6601a4048f3a0604fc672fb8fb6
#: ../../deployment.rst:156
msgid ""
"Instead of a single Bottle application server, you start one instance for "
"each CPU core available using different local port (localhost:8080, 8081, "
"8082, ...). You can choose any server adapter you want, even asynchronous "
"ones. Then a high performance load balancer acts as a reverse proxy and "
"forwards each new requests to a random port, spreading the load between all "
"available back-ends. This way you can use all of your CPU cores and even "
"spread out the load between different physical servers."
msgstr ""
"不只是启动一个应用服务器，你需要同时启动多个应用服务器，监听不同的端口"
"(localhost:8080, 8081, 8082, ...)。你可选择任何服务器，甚至那些异步服务器。然"
"后一个高性能的负载均衡器，像一个反向代理那样工作，将新的请求发送到一个随机端"
"口，在多个服务器之间分散压力。这样你就可以利用所有的CPU核心，甚至在多个机器上"
"实现负载均衡。"

# d77aec94ad8a4986bb0ae2761ebcffa4
#: ../../deployment.rst:158
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 ""
" Pound_ 是最快的负载均衡器之一，但是只要有代理模块的Web服务器，也可以充当这一"
"角色。"

# fcbb45ba206244d893de7e13415b56d7
#: ../../deployment.rst:160
msgid "Pound example::"
msgstr "Pound的例子::"

# fab06de93eed468ebdfa731b5407a43e
#: ../../deployment.rst:178
msgid "Apache example::"
msgstr "Apache的例子::"

# 3cdac45e435942a09076cf399934985e
#: ../../deployment.rst:186
msgid "Lighttpd example::"
msgstr "Lighttpd的例子::"

# e4f5617ee96b4550b47db6fd041c819c
#: ../../deployment.rst:198
msgid "Good old CGI"
msgstr "CGI这个老好人"

# a62b689e2ad0402a9d9acba6458e4781
#: ../../deployment.rst:200
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 ""
"CGI服务器会为每个请求启动一个进程。虽然这样代价高昂，但有时这是唯一的选择。 "
"`cgi` 这个适配器实际上并没有启动一个CGI服务器，只是将你的Bottle应用转换成了一"
"个有效的CGI应用。"
