diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
new file mode 100644
index 000000000..829c571c8
--- /dev/null
+++ b/.github/workflows/deploy.yml
@@ -0,0 +1,38 @@
+name: deploy
+on:
+ push:
+ branches:
+ - xin
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up Python
+ uses: actions/setup-python@v2
+ with:
+ python-version: "3.10"
+ - uses: s-weigand/setup-conda@v1
+ - run: conda --version
+ - run: which python
+
+ - name: Install dependencies
+ run: |
+ pip install -r requirements.txt
+ pip install sphinx-intl
+
+ - name: Build the book
+ run: |
+ sphinx-build -b gettext docs build/gettext
+ sphinx-intl update -p build/gettext -l zh_CN
+ sphinx-build -D language=zh_CN -b html docs build/html
+
+ - name: GitHub Pages action
+ uses: peaceiris/actions-gh-pages@v3.6.1
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ publish_dir: build/html
+ user_name: "github-actions[bot]"
+ user_email: "github-actions[bot]@users.noreply.github.com"
\ No newline at end of file
diff --git a/docs/conf.py b/docs/conf.py
index d732ac29f..6576d534d 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -64,7 +64,7 @@
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
-#language = None
+language = 'zh_CN'
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
@@ -286,3 +286,6 @@
intersphinx_mapping = {
'python': ('https://docs.python.org/3', None),
}
+
+locale_dirs = ['../locales']
+gettext_compact = False # optional.
\ No newline at end of file
diff --git a/locales/.gitignore b/locales/.gitignore
new file mode 100644
index 000000000..c90071a51
--- /dev/null
+++ b/locales/.gitignore
@@ -0,0 +1 @@
+*.mo
\ No newline at end of file
diff --git a/locales/zh_CN/LC_MESSAGES/404.po b/locales/zh_CN/LC_MESSAGES/404.po
new file mode 100644
index 000000000..9918e61fc
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/404.po
@@ -0,0 +1,52 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-11-18 16:06+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../docs/404.rst:5
+msgid "404 — Not Found"
+msgstr ""
+
+#: ../../docs/404.rst:7
+msgid "**Sorry, but we couldn't find the page you requested.**"
+msgstr ""
+
+#: ../../docs/404.rst:9
+msgid "It looks like this was the result of either:"
+msgstr ""
+
+#: ../../docs/404.rst:11
+msgid "a mistyped address"
+msgstr ""
+
+#: ../../docs/404.rst:12
+msgid "an out-of-date link"
+msgstr ""
+
+#: ../../docs/404.rst:14
+msgid "`Click here to go back to the homepage. `_"
+msgstr ""
+
+#: ../../docs/404.rst:16
+msgid "Or, try `searching `_."
+msgstr ""
+
diff --git a/locales/zh_CN/LC_MESSAGES/dev/env.po b/locales/zh_CN/LC_MESSAGES/dev/env.po
new file mode 100644
index 000000000..13d3e0ac1
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/dev/env.po
@@ -0,0 +1,595 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../dev/env.rst:2
+msgid "Your Development Environment"
+msgstr ""
+
+#: ../../dev/env.rst:8
+msgid "Text Editors"
+msgstr ""
+
+#: ../../dev/env.rst:10
+msgid ""
+"Just about anything that can edit plain text will work for writing Python"
+" code; however, using a more powerful editor may make your life a bit "
+"easier."
+msgstr ""
+
+#: ../../dev/env.rst:15
+msgid "Vim"
+msgstr ""
+
+#: ../../dev/env.rst:17
+msgid ""
+"Vim is a text editor which uses keyboard shortcuts for editing instead of"
+" menus or icons. There are a couple of plugins and settings for the Vim "
+"editor to aid Python development. If you only develop in Python, a good "
+"start is to set the default settings for indentation and line-wrapping to"
+" values compliant with :pep:`8`. In your home directory, open a file "
+"called :file:`.vimrc` and add the following lines::"
+msgstr ""
+
+#: ../../dev/env.rst:32
+msgid ""
+"With these settings, newlines are inserted after 79 characters and "
+"indentation is set to 4 spaces per tab. If you also use Vim for other "
+"languages, there is a handy plugin called indent_, which handles "
+"indentation settings for Python source files."
+msgstr ""
+
+#: ../../dev/env.rst:37
+msgid ""
+"There is also a handy syntax plugin called syntax_ featuring some "
+"improvements over the syntax file included in Vim 6.1."
+msgstr ""
+
+#: ../../dev/env.rst:40
+msgid ""
+"These plugins supply you with a basic environment for developing in "
+"Python. To get the most out of Vim, you should continually check your "
+"code for syntax errors and PEP8 compliance. Luckily pycodestyle_ and "
+"Pyflakes_ will do this for you. If your Vim is compiled with ``+python`` "
+"you can also utilize some very handy plugins to do these checks from "
+"within the editor."
+msgstr ""
+
+#: ../../dev/env.rst:46
+msgid ""
+"For PEP8 checking and pyflakes, you can install vim-flake8_. Now you can "
+"map the function ``Flake8`` to any hotkey or action you want in Vim. The "
+"plugin will display errors at the bottom of the screen, and provide an "
+"easy way to jump to the corresponding line. It's very handy to call this "
+"function whenever you save a file. In order to do this, add the following"
+" line to your :file:`.vimrc`::"
+msgstr ""
+
+#: ../../dev/env.rst:55
+msgid ""
+"If you are already using syntastic_, you can set it to run Pyflakes on "
+"write and show errors and warnings in the quickfix window. An example "
+"configuration to do that which also shows status and warning messages in "
+"the statusbar would be::"
+msgstr ""
+
+#: ../../dev/env.rst:68
+msgid "Python-mode"
+msgstr ""
+
+#: ../../dev/env.rst:70
+msgid ""
+"Python-mode_ is a complex solution for working with Python code in Vim. "
+"It has:"
+msgstr ""
+
+#: ../../dev/env.rst:73
+msgid ""
+"Asynchronous Python code checking (``pylint``, ``pyflakes``, "
+"``pycodestyle``, ``mccabe``) in any combination"
+msgstr ""
+
+#: ../../dev/env.rst:74
+msgid "Code refactoring and autocompletion with Rope"
+msgstr ""
+
+#: ../../dev/env.rst:75
+msgid "Fast Python folding"
+msgstr ""
+
+#: ../../dev/env.rst:76
+msgid "Virtualenv support"
+msgstr ""
+
+#: ../../dev/env.rst:77
+msgid "Search through Python documentation and run Python code"
+msgstr ""
+
+#: ../../dev/env.rst:78
+msgid "Auto pycodestyle_ error fixes"
+msgstr ""
+
+#: ../../dev/env.rst:80
+msgid "And more."
+msgstr ""
+
+#: ../../dev/env.rst:83
+msgid "SuperTab"
+msgstr ""
+
+#: ../../dev/env.rst:85
+msgid ""
+"SuperTab_ is a small Vim plugin that makes code completion more "
+"convenient by using ```` key or any other customized keys."
+msgstr ""
+
+#: ../../dev/env.rst:98
+msgid "Emacs"
+msgstr ""
+
+#: ../../dev/env.rst:100
+msgid ""
+"Emacs is another powerful text editor. It is fully programmable (Lisp), "
+"but it can be some work to wire up correctly. A good start if you're "
+"already an Emacs user is `Python Programming in Emacs`_ at EmacsWiki."
+msgstr ""
+
+#: ../../dev/env.rst:104
+msgid "Emacs itself comes with a Python mode."
+msgstr ""
+
+#: ../../dev/env.rst:109
+msgid "TextMate"
+msgstr ""
+
+#: ../../dev/env.rst:111
+msgid ""
+"`TextMate `_ brings Apple's approach to operating"
+" systems into the world of text editors. By bridging Unix underpinnings "
+"and GUI, TextMate cherry-picks the best of both worlds to the benefit of "
+"expert scripters and novice users alike."
+msgstr ""
+
+#: ../../dev/env.rst:117
+msgid "Sublime Text"
+msgstr ""
+
+#: ../../dev/env.rst:119
+msgid ""
+"`Sublime Text `_ is a sophisticated text "
+"editor for code, markup, and prose. You'll love the slick user interface,"
+" extraordinary features, and amazing performance."
+msgstr ""
+
+#: ../../dev/env.rst:123
+msgid ""
+"Sublime Text has excellent support for editing Python code and uses "
+"Python for its plugin API. It also has a diverse variety of plugins, "
+"`some of which `_ allow "
+"for in-editor PEP8 checking and code \"linting\"."
+msgstr ""
+
+#: ../../dev/env.rst:129
+msgid "Atom"
+msgstr ""
+
+#: ../../dev/env.rst:131
+msgid ""
+"`Atom `_ is a hackable text editor for the 21st "
+"century, built on atom-shell, and based on everything we love about our "
+"favorite editors."
+msgstr ""
+
+#: ../../dev/env.rst:135
+msgid ""
+"Atom is web native (HTML, CSS, JS), focusing on modular design and easy "
+"plugin development. It comes with native package control and a plethora "
+"of packages. Recommended for Python development is `Linter "
+"`_ combined with `linter-flake8 "
+"`_."
+msgstr ""
+
+#: ../../dev/env.rst:142
+msgid "Python (on Visual Studio Code)"
+msgstr ""
+
+#: ../../dev/env.rst:144
+msgid ""
+"`Python for Visual Studio "
+"`_ "
+"is an extension for the `Visual Studio Code "
+"`_. This is a free, lightweight, open "
+"source code editor, with support for Mac, Windows, and Linux. Built using"
+" open source technologies such as Node.js and Python, with compelling "
+"features such as Intellisense (autocompletion), local and remote "
+"debugging, linting, and the like."
+msgstr ""
+
+#: ../../dev/env.rst:148
+msgid "MIT licensed."
+msgstr ""
+
+#: ../../dev/env.rst:151
+msgid "IDEs"
+msgstr ""
+
+#: ../../dev/env.rst:154
+msgid "PyCharm / IntelliJ IDEA"
+msgstr ""
+
+#: ../../dev/env.rst:156
+msgid ""
+"`PyCharm `_ is developed by JetBrains,"
+" also known for IntelliJ IDEA. Both share the same code base and most of "
+"PyCharm's features can be brought to IntelliJ with the free `Python Plug-"
+"In `_. There "
+"are two versions of PyCharm: Professional Edition (Free 30-day trial) and"
+" Community Edition (Apache 2.0 License) with fewer features."
+msgstr ""
+
+#: ../../dev/env.rst:165
+msgid "Enthought Canopy"
+msgstr ""
+
+#: ../../dev/env.rst:166
+msgid ""
+"`Enthought Canopy `_ is a "
+"Python IDE which is focused towards Scientists and Engineers as it "
+"provides pre installed libraries for data analysis."
+msgstr ""
+
+#: ../../dev/env.rst:171
+msgid "Eclipse"
+msgstr ""
+
+#: ../../dev/env.rst:173
+msgid ""
+"The most popular Eclipse plugin for Python development is Aptana's `PyDev"
+" `_."
+msgstr ""
+
+#: ../../dev/env.rst:178
+msgid "Komodo IDE"
+msgstr ""
+
+#: ../../dev/env.rst:180
+msgid ""
+"`Komodo IDE `_ is "
+"developed by ActiveState and is a commercial IDE for Windows, Mac, and "
+"Linux. `KomodoEdit `_ is the open "
+"source alternative."
+msgstr ""
+
+#: ../../dev/env.rst:187
+msgid "Spyder"
+msgstr ""
+
+#: ../../dev/env.rst:189
+msgid ""
+"`Spyder `_ is an IDE specifically "
+"geared toward working with scientific Python libraries (namely `SciPy "
+"`_). It includes integration with pyflakes_, "
+"`pylint `_ and `rope `_."
+msgstr ""
+
+#: ../../dev/env.rst:195
+msgid ""
+"Spyder is open source (free), offers code completion, syntax "
+"highlighting, a class and function browser, and object inspection."
+msgstr ""
+
+#: ../../dev/env.rst:200
+msgid "WingIDE"
+msgstr ""
+
+#: ../../dev/env.rst:202
+msgid ""
+"`WingIDE `_ is a Python specific IDE. It runs on "
+"Linux, Windows, and Mac (as an X11 application, which frustrates some Mac"
+" users)."
+msgstr ""
+
+#: ../../dev/env.rst:205
+msgid ""
+"WingIDE offers code completion, syntax highlighting, source browser, "
+"graphical debugger and support for version control systems."
+msgstr ""
+
+#: ../../dev/env.rst:210
+msgid "NINJA-IDE"
+msgstr ""
+
+#: ../../dev/env.rst:212
+msgid ""
+"`NINJA-IDE `_ (from the recursive acronym: "
+"\"Ninja-IDE Is Not Just Another IDE\") is a cross-platform IDE, specially"
+" designed to build Python applications, and runs on Linux/X11, Mac OS X, "
+"and Windows desktop operating systems. Installers for these platforms can"
+" be downloaded from the website."
+msgstr ""
+
+#: ../../dev/env.rst:218
+msgid ""
+"NINJA-IDE is open source software (GPLv3 licence) and is developed in "
+"Python and Qt. The source files can be downloaded from `GitHub "
+"`_."
+msgstr ""
+
+#: ../../dev/env.rst:224
+msgid "Eric (The Eric Python IDE)"
+msgstr ""
+
+#: ../../dev/env.rst:226
+msgid ""
+"`Eric `_ is a full featured Python "
+"IDE offering source code autocompletion, syntax highlighting, support for"
+" version control systems, Python 3 support, integrated web browser, "
+"python shell, integrated debugger, and a flexible plug-in system. Written"
+" in Python, it is based on the Qt GUI toolkit, integrating the Scintilla "
+"editor control. Eric is an open source software project (GPLv3 licence) "
+"with more than ten years of active development."
+msgstr ""
+
+#: ../../dev/env.rst:235
+msgid "Mu"
+msgstr ""
+
+#: ../../dev/env.rst:237
+msgid ""
+"`Mu `_ is a minimalist Python IDE which can run "
+"Python 3 code locally and can also deploy code to the BBC micro:bit and "
+"to Adafruit boards running CircuitPython."
+msgstr ""
+
+#: ../../dev/env.rst:241
+msgid ""
+"Intended for beginners, mu includes a Python 3 interpreter, and is easy "
+"to install on Windows, OS/X and Linux. It runs well on the Raspberry Pi."
+msgstr ""
+
+#: ../../dev/env.rst:244
+msgid "There's an active support community on gitter."
+msgstr ""
+
+#: ../../dev/env.rst:248
+msgid "Interpreter Tools"
+msgstr ""
+
+#: ../../dev/env.rst:252
+msgid "Virtual Environments"
+msgstr ""
+
+#: ../../dev/env.rst:254
+msgid ""
+"Virtual Environments provide a powerful way to isolate project package "
+"dependencies. This means that you can use packages particular to a Python"
+" project without installing them system wide and thus avoiding potential "
+"version conflicts."
+msgstr ""
+
+#: ../../dev/env.rst:256
+msgid ""
+"To start using and see more information: `Virtual Environments "
+"`_ docs."
+msgstr ""
+
+#: ../../dev/env.rst:261
+msgid "pyenv"
+msgstr ""
+
+#: ../../dev/env.rst:263
+msgid ""
+"`pyenv `_ is a tool to allow multiple "
+"versions of the Python interpreter to be installed at the same time. "
+"This solves the problem of having different projects requiring different "
+"versions of Python. For example, it becomes very easy to install Python "
+"2.7 for compatibility in one project, while still using Python 3.4 as the"
+" default interpreter. pyenv isn't just limited to the CPython versions – "
+"it will also install PyPy, Anaconda, miniconda, stackless, Jython, and "
+"IronPython interpreters."
+msgstr ""
+
+#: ../../dev/env.rst:271
+msgid ""
+"pyenv works by filling a ``shims`` directory with fake versions of the "
+"Python interpreter (plus other tools like ``pip`` and ``2to3``). When "
+"the system looks for a program named ``python``, it looks inside the "
+"``shims`` directory first, and uses the fake version, which in turn "
+"passes the command on to pyenv. pyenv then works out which version of "
+"Python should be run based on environment variables, ``.python-version`` "
+"files, and the global default."
+msgstr ""
+
+#: ../../dev/env.rst:278
+msgid ""
+"pyenv isn't a tool for managing virtual environments, but there is the "
+"plugin `pyenv-virtualenv `_ "
+"which automates the creation of different environments, and also makes it"
+" possible to use the existing pyenv tools to switch to different "
+"environments based on environment variables or ``.python-version`` files."
+msgstr ""
+
+#: ../../dev/env.rst:285
+msgid "Other Tools"
+msgstr ""
+
+#: ../../dev/env.rst:288
+msgid "IDLE"
+msgstr ""
+
+#: ../../dev/env.rst:290
+msgid ""
+":ref:`IDLE ` is an integrated development environment that "
+"is part of the Python standard distribution. It is completely written in "
+"Python and uses the Tkinter GUI toolkit. Though IDLE is not suited for "
+"full-blown development using Python, it is quite helpful to try out small"
+" Python snippets and experiment with different features in Python."
+msgstr ""
+
+#: ../../dev/env.rst:296
+msgid "It provides the following features:"
+msgstr ""
+
+#: ../../dev/env.rst:298
+msgid "Python Shell Window (interpreter)"
+msgstr ""
+
+#: ../../dev/env.rst:299
+msgid "Multi window text editor that colorizes Python code"
+msgstr ""
+
+#: ../../dev/env.rst:300
+msgid "Minimal debugging facility"
+msgstr ""
+
+#: ../../dev/env.rst:304
+msgid "IPython"
+msgstr ""
+
+#: ../../dev/env.rst:306
+msgid ""
+"`IPython `_ provides a rich toolkit to help you make"
+" the most out of using Python interactively. Its main components are:"
+msgstr ""
+
+#: ../../dev/env.rst:309
+msgid "Powerful Python shells (terminal- and Qt-based)"
+msgstr ""
+
+#: ../../dev/env.rst:310
+msgid ""
+"A web-based notebook with the same core features but support for rich "
+"media, text, code, mathematical expressions and inline plots"
+msgstr ""
+
+#: ../../dev/env.rst:312
+msgid "Support for interactive data visualization and use of GUI toolkits"
+msgstr ""
+
+#: ../../dev/env.rst:313
+msgid "Flexible, embeddable interpreters to load into your own projects"
+msgstr ""
+
+#: ../../dev/env.rst:314
+msgid "Tools for high level and interactive parallel computing"
+msgstr ""
+
+#: ../../dev/env.rst:320
+msgid ""
+"To download and install IPython with all its optional dependencies for "
+"the notebook, qtconsole, tests, and other functionalities:"
+msgstr ""
+
+#: ../../dev/env.rst:327
+msgid "BPython"
+msgstr ""
+
+#: ../../dev/env.rst:329
+msgid ""
+"`bpython `_ is an alternative interface"
+" to the Python interpreter for Unix-like operating systems. It has the "
+"following features:"
+msgstr ""
+
+#: ../../dev/env.rst:333
+msgid "In-line syntax highlighting"
+msgstr ""
+
+#: ../../dev/env.rst:334
+msgid "Readline-like autocomplete with suggestions displayed as you type"
+msgstr ""
+
+#: ../../dev/env.rst:335
+msgid "Expected parameter list for any Python function"
+msgstr ""
+
+#: ../../dev/env.rst:336
+msgid ""
+"\"Rewind\" function to pop the last line of code from memory and re-"
+"evaluate"
+msgstr ""
+
+#: ../../dev/env.rst:337
+msgid "Send entered code off to a pastebin"
+msgstr ""
+
+#: ../../dev/env.rst:338
+msgid "Save entered code to a file"
+msgstr ""
+
+#: ../../dev/env.rst:339
+msgid "Auto-indentation"
+msgstr ""
+
+#: ../../dev/env.rst:340
+msgid "Python 3 support"
+msgstr ""
+
+#: ../../dev/env.rst:347
+msgid "ptpython"
+msgstr ""
+
+#: ../../dev/env.rst:349
+msgid ""
+"`ptpython `_ is a REPL build "
+"on top of the `prompt_toolkit `_ library. It is considered to be an alternative to "
+"BPython_. Features include:"
+msgstr ""
+
+#: ../../dev/env.rst:353
+msgid "Syntax highlighting"
+msgstr ""
+
+#: ../../dev/env.rst:354
+msgid "Autocompletion"
+msgstr ""
+
+#: ../../dev/env.rst:355
+msgid "Multiline editing"
+msgstr ""
+
+#: ../../dev/env.rst:356
+msgid "Emacs and Vim Modes"
+msgstr ""
+
+#: ../../dev/env.rst:357
+msgid "Embedding REPL inside of your code"
+msgstr ""
+
+#: ../../dev/env.rst:358
+msgid "Syntax validation"
+msgstr ""
+
+#: ../../dev/env.rst:359
+msgid "Tab pages"
+msgstr ""
+
+#: ../../dev/env.rst:360
+msgid ""
+"Support for integrating with IPython_'s shell, by installing IPython "
+"(``pip install ipython``) and running ``ptipython``."
+msgstr ""
+
diff --git a/locales/zh_CN/LC_MESSAGES/dev/pip-virtualenv.po b/locales/zh_CN/LC_MESSAGES/dev/pip-virtualenv.po
new file mode 100644
index 000000000..70e589e69
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/dev/pip-virtualenv.po
@@ -0,0 +1,177 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../dev/pip-virtualenv.rst:4
+msgid "Further Configuration of pip and Virtualenv"
+msgstr ""
+
+#: ../../dev/pip-virtualenv.rst:9
+msgid "Requiring an active virtual environment for ``pip``"
+msgstr ""
+
+#: ../../dev/pip-virtualenv.rst:11
+msgid ""
+"By now it should be clear that using virtual environments is a great way "
+"to keep your development environment clean and keeping different "
+"projects' requirements separate."
+msgstr ""
+
+#: ../../dev/pip-virtualenv.rst:15
+msgid ""
+"When you start working on many different projects, it can be hard to "
+"remember to activate the related virtual environment when you come back "
+"to a specific project. As a result of this, it is very easy to install "
+"packages globally while thinking that you are actually installing the "
+"package for the virtual environment of the project. Over time this can "
+"result in a messy global package list."
+msgstr ""
+
+#: ../../dev/pip-virtualenv.rst:22
+msgid ""
+"In order to make sure that you install packages to your active virtual "
+"environment when you use ``pip install``, consider adding the following "
+"line to your :file:`~/.bashrc` file:"
+msgstr ""
+
+#: ../../dev/pip-virtualenv.rst:30
+msgid ""
+"After saving this change and sourcing the :file:`~/.bashrc` file with "
+"``source ~/.bashrc``, pip will no longer let you install packages if you "
+"are not in a virtual environment. If you try to use ``pip install`` "
+"outside of a virtual environment pip will gently remind you that an "
+"activated virtual environment is needed to install packages."
+msgstr ""
+
+#: ../../dev/pip-virtualenv.rst:41
+msgid ""
+"You can also do this configuration by editing your :file:`pip.conf` or "
+":file:`pip.ini` file. :file:`pip.conf` is used by Unix and Mac OS X "
+"operating systems and it can be found at:"
+msgstr ""
+
+#: ../../dev/pip-virtualenv.rst:49
+msgid ""
+"Similarly, the :file:`pip.ini` file is used by Windows operating systems "
+"and it can be found at:"
+msgstr ""
+
+#: ../../dev/pip-virtualenv.rst:56
+msgid ""
+"If you don't have a :file:`pip.conf` or :file:`pip.ini` file at these "
+"locations, you can create a new file with the correct name for your "
+"operating system."
+msgstr ""
+
+#: ../../dev/pip-virtualenv.rst:59
+msgid ""
+"If you already have a configuration file, just add the following line "
+"under the ``[global]`` settings to require an active virtual environment:"
+msgstr ""
+
+#: ../../dev/pip-virtualenv.rst:66
+msgid ""
+"If you did not have a configuration file, you will need to create a new "
+"one and add the following lines to this new file:"
+msgstr ""
+
+#: ../../dev/pip-virtualenv.rst:75
+msgid ""
+"You will of course need to install some packages globally (usually ones "
+"that you use across different projects consistently) and this can be "
+"accomplished by adding the following to your :file:`~/.bashrc` file:"
+msgstr ""
+
+#: ../../dev/pip-virtualenv.rst:85
+msgid ""
+"After saving the changes and sourcing your :file:`~/.bashrc` file you can"
+" now install packages globally by running ``gpip install``. You can "
+"change the name of the function to anything you like, just keep in mind "
+"that you will have to use that name when trying to install packages "
+"globally with pip."
+msgstr ""
+
+#: ../../dev/pip-virtualenv.rst:91
+msgid "Caching packages for future use"
+msgstr ""
+
+#: ../../dev/pip-virtualenv.rst:93
+msgid ""
+"Every developer has preferred libraries and when you are working on a lot"
+" of different projects, you are bound to have some overlap between the "
+"libraries that you use. For example, you may be using the ``requests`` "
+"library in a lot of different projects."
+msgstr ""
+
+#: ../../dev/pip-virtualenv.rst:98
+msgid ""
+"It is surely unnecessary to re-download the same packages/libraries each "
+"time you start working on a new project (and in a new virtual environment"
+" as a result). Fortunately, starting with version 6.0, pip provides an "
+"`on-by-default caching mechanism "
+"`_ that "
+"doesn't need any configuration."
+msgstr ""
+
+#: ../../dev/pip-virtualenv.rst:105
+msgid ""
+"When using older versions, you can configure pip in such a way that it "
+"tries to reuse already installed packages, too."
+msgstr ""
+
+#: ../../dev/pip-virtualenv.rst:108
+msgid ""
+"On Unix systems, you can add the following line to your :file:`.bashrc` "
+"or :file:`.bash_profile` file."
+msgstr ""
+
+#: ../../dev/pip-virtualenv.rst:115
+msgid ""
+"You can set the path to anywhere you like (as long as you have write "
+"access). After adding this line, ``source`` your :file:`.bashrc` (or "
+":file:`.bash_profile`) file and you will be all set."
+msgstr ""
+
+#: ../../dev/pip-virtualenv.rst:119
+msgid ""
+"Another way of doing the same configuration is via the :file:`pip.conf` "
+"or :file:`pip.ini` files, depending on your system. If you are on "
+"Windows, you can add the following line to your :file:`pip.ini` file "
+"under ``[global]`` settings:"
+msgstr ""
+
+#: ../../dev/pip-virtualenv.rst:127
+msgid ""
+"Similarly, on Unix systems you should simply add the following line to "
+"your :file:`pip.conf` file under ``[global]`` settings:"
+msgstr ""
+
+#: ../../dev/pip-virtualenv.rst:134
+msgid ""
+"Even though you can use any path you like to store your cache, it is "
+"recommended that you create a new folder *in* the folder where your "
+":file:`pip.conf` or :file:`pip.ini` file lives. If you don't trust "
+"yourself with all of this path voodoo, just use the values provided here "
+"and you will be fine."
+msgstr ""
+
diff --git a/locales/zh_CN/LC_MESSAGES/dev/virtualenvs.po b/locales/zh_CN/LC_MESSAGES/dev/virtualenvs.po
new file mode 100644
index 000000000..97d3d4ccc
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/dev/virtualenvs.po
@@ -0,0 +1,504 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../dev/virtualenvs.rst:4
+msgid "Pipenv & Virtual Environments"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:8
+msgid "This tutorial walks you through installing and using Python packages."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:10
+msgid ""
+"It will show you how to install and use the necessary tools and make "
+"strong recommendations on best practices. Keep in mind that Python is "
+"used for a great many different purposes, and precisely how you want to "
+"manage your dependencies may change based on how you decide to publish "
+"your software. The guidance presented here is most directly applicable to"
+" the development and deployment of network services (including web "
+"applications), but is also very well suited to managing development and "
+"testing environments for any kind of project."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:18
+msgid ""
+"This guide is written for Python 3, however, these instructions should "
+"work fine on Python 2.7—if you are still using it, for some reason."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:23
+msgid "Make sure you've got Python & pip"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:25
+msgid ""
+"Before you go any further, make sure you have Python and that it's "
+"available from your command line. You can check this by simply running:"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:32
+msgid ""
+"You should get some output like ``3.6.2``. If you do not have Python, "
+"please install the latest 3.x version from `python.org`_ or refer to the "
+"`Installing Python`_ section of this guide."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:36
+msgid "If you're newcomer and you get an error like this:"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:45
+msgid ""
+"It's because this command is intended to be run in a *shell* (also called"
+" a *terminal* or *console*). See the Python for Beginners `getting "
+"started tutorial`_ for an introduction to using your operating system's "
+"shell and interacting with Python."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:50
+msgid ""
+"Additionally, you'll need to make sure you have `pip`_ available. You can"
+" check this by running:"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:57
+msgid ""
+"If you installed Python from source, with an installer from "
+"`python.org`_, or via `Homebrew`_ you should already have pip. If you're "
+"on Linux and installed using your OS package manager, you may have to "
+"`install pip `_ separately."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:69
+msgid "Installing Pipenv"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:71
+msgid ""
+"`Pipenv`_ is a dependency manager for Python projects. If you're familiar"
+" with Node.js' `npm`_ or Ruby's `bundler`_, it is similar in spirit to "
+"those tools. While `pip`_ can install Python packages, Pipenv is "
+"recommended as it's a higher-level tool that simplifies dependency "
+"management for common use cases."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:77
+msgid "Use ``pip`` to install Pipenv:"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:84
+msgid ""
+"This does a `user installation`_ to prevent breaking any system-wide "
+"packages. If ``pipenv`` isn't available in your shell after installation,"
+" you'll need to add the `user base`_'s binary directory to your ``PATH``."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:88
+msgid ""
+"On Linux and macOS you can find the user base binary directory by running"
+" ``python -m site --user-base`` and adding ``bin`` to the end. For "
+"example, this will typically print ``~/.local`` (with ``~`` expanded to "
+"the absolute path to your home directory) so you'll need to add "
+"``~/.local/bin`` to your ``PATH``. You can set your ``PATH`` permanently "
+"by `modifying ~/.profile`_."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:95
+msgid ""
+"On Windows you can find the user base binary directory by running ``py -m"
+" site --user-site`` and replacing ``site-packages`` with ``Scripts``. For"
+" example, this could return "
+"``C:\\Users\\Username\\AppData\\Roaming\\Python36\\site-packages`` so you"
+" would need to set your ``PATH`` to include "
+"``C:\\Users\\Username\\AppData\\Roaming\\Python36\\Scripts``. You can set"
+" your user ``PATH`` permanently in the `Control Panel`_. You may need to "
+"log out for the ``PATH`` changes to take effect."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:113
+msgid "Installing packages for your project"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:115
+msgid ""
+"Pipenv manages dependencies on a per-project basis. To install packages, "
+"change into your project's directory (or just an empty directory for this"
+" tutorial) and run:"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:124
+msgid ""
+"Pipenv will install the excellent `Requests`_ library and create a "
+"``Pipfile`` for you in your project's directory. The `Pipfile`_ is used "
+"to track which dependencies your project needs in case you need to re-"
+"install them, such as when you share your project with others. You should"
+" get output similar to this (although the exact paths shown will vary):"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:163
+msgid "Using installed packages"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:165
+msgid ""
+"Now that Requests is installed you can create a simple ``main.py`` file "
+"to use it:"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:176
+msgid "Then you can run this script using ``pipenv run``:"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:182
+msgid "You should get output similar to this:"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:188
+msgid ""
+"Using ``$ pipenv run`` ensures that your installed packages are available"
+" to your script. It's also possible to spawn a new shell that ensures all"
+" commands have access to your installed packages with ``$ pipenv shell``."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:194
+msgid "Next steps"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:196
+msgid ""
+"Congratulations, you now know how to install and use Python packages! ✨ 🍰"
+" ✨"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:201
+msgid "Lower level: virtualenv"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:203
+msgid ""
+"`virtualenv `_ is a tool to create "
+"isolated Python environments. virtualenv creates a folder which contains "
+"all the necessary executables to use the packages that a Python project "
+"would need."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:207
+msgid "It can be used standalone, in place of Pipenv."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:209
+msgid "Install virtualenv via pip:"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:215
+msgid "Test your installation:"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:222 ../../dev/virtualenvs.rst:363
+msgid "Basic Usage"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:224
+msgid "Create a virtual environment for a project:"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:231
+msgid ""
+"``virtualenv venv`` will create a folder in the current directory which "
+"will contain the Python executable files, and a copy of the ``pip`` "
+"library which you can use to install other packages. The name of the "
+"virtual environment (in this case, it was ``venv``) can be anything; "
+"omitting the name will place the files in the current directory instead."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:238
+msgid ""
+"'venv' is the general convention used globally. As it is readily "
+"available in ignore files (eg: .gitignore')"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:240
+msgid ""
+"This creates a copy of Python in whichever directory you ran the command "
+"in, placing it in a folder named :file:`venv`."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:243
+msgid ""
+"You can also use the Python interpreter of your choice (like "
+"``python2.7``)."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:250
+msgid "or change the interpreter globally with an env variable in ``~/.bashrc``:"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:256
+msgid "To begin using the virtual environment, it needs to be activated:"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:262
+msgid ""
+"The name of the current virtual environment will now appear on the left "
+"of the prompt (e.g. ``(venv)Your-Computer:project_folder UserName$``) to "
+"let you know that it's active. From now on, any package that you install "
+"using pip will be placed in the ``venv`` folder, isolated from the global"
+" Python installation."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:267
+msgid ""
+"For Windows, the same command mentioned in step 1 can be used to create a"
+" virtual environment. However, activating the environment requires a "
+"slightly different command."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:269
+msgid "Assuming that you are in your project directory:"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:275
+msgid "Install packages using the ``pip`` command:"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:281
+msgid ""
+"If you are done working in the virtual environment for the moment, you "
+"can deactivate it:"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:288
+msgid ""
+"This puts you back to the system's default Python interpreter with all "
+"its installed libraries."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:291
+msgid ""
+"To delete a virtual environment, just delete its folder. (In this case, "
+"it would be ``rm -rf venv``.)"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:294
+msgid ""
+"After a while, though, you might end up with a lot of virtual "
+"environments littered across your system, and it's possible you'll forget"
+" their names or where they were placed."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:299
+msgid ""
+"Python has included venv module from version 3.3. For more details: `venv"
+" `_."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:302
+msgid "Other Notes"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:304
+msgid ""
+"Running ``virtualenv`` with the option ``--no-site-packages`` will not "
+"include the packages that are installed globally. This can be useful for "
+"keeping the package list clean in case it needs to be accessed later. "
+"[This is the default behavior for ``virtualenv`` 1.7 and later.]"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:309
+msgid ""
+"In order to keep your environment consistent, it's a good idea to "
+"\"freeze\" the current state of the environment packages. To do this, "
+"run:"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:316
+msgid ""
+"This will create a :file:`requirements.txt` file, which contains a simple"
+" list of all the packages in the current environment, and their "
+"respective versions. You can see the list of installed packages without "
+"the requirements format using ``pip list``. Later it will be easier for a"
+" different developer (or you, if you need to re-create the environment) "
+"to install the same packages using the same versions:"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:327
+msgid ""
+"This can help ensure consistency across installations, across "
+"deployments, and across developers."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:330
+msgid ""
+"Lastly, remember to exclude the virtual environment folder from source "
+"control by adding it to the ignore list (see :ref:`Version Control "
+"Ignores`)."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:336
+msgid "virtualenvwrapper"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:338
+msgid ""
+"`virtualenvwrapper "
+"`_ "
+"provides a set of commands which makes working with virtual environments "
+"much more pleasant. It also places all your virtual environments in one "
+"place."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:342 ../../dev/virtualenvs.rst:354
+msgid "To install (make sure **virtualenv** is already installed):"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:350
+msgid ""
+"(`Full virtualenvwrapper install instructions "
+"`_.)"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:352
+msgid ""
+"For Windows, you can use the `virtualenvwrapper-win "
+"`_."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:360
+msgid "In Windows, the default path for WORKON_HOME is %USERPROFILE%\\\\Envs"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:365
+msgid "Create a virtual environment:"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:371
+msgid "This creates the :file:`project_folder` folder inside :file:`~/Envs`."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:373
+msgid "Work on a virtual environment:"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:379
+msgid ""
+"Alternatively, you can make a project, which creates the virtual "
+"environment, and also a project directory inside ``$WORKON_HOME``, which "
+"is ``cd``-ed into when you ``workon project_folder``."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:387
+msgid ""
+"**virtualenvwrapper** provides tab-completion on environment names. It "
+"really helps when you have a lot of environments and have trouble "
+"remembering their names."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:391
+msgid ""
+"``workon`` also deactivates whatever environment you are currently in, so"
+" you can quickly switch between environments."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:394
+msgid "Deactivating is still the same:"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:400
+msgid "To delete:"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:407
+msgid "Other useful commands"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:410
+msgid "``lsvirtualenv``"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:410
+msgid "List all of the environments."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:414
+msgid "``cdvirtualenv``"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:413
+msgid ""
+"Navigate into the directory of the currently activated virtual "
+"environment, so you can browse its :file:`site-packages`, for example."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:417
+msgid "``cdsitepackages``"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:417
+msgid "Like the above, but directly into :file:`site-packages` directory."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:420
+msgid "``lssitepackages``"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:420
+msgid "Shows contents of :file:`site-packages` directory."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:422
+msgid ""
+"`Full list of virtualenvwrapper commands "
+"`_."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:425
+msgid "virtualenv-burrito"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:427
+msgid ""
+"With `virtualenv-burrito `_, you can have a working virtualenv + virtualenvwrapper "
+"environment in a single command."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:431
+msgid "direnv"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:432
+msgid ""
+"When you ``cd`` into a directory containing a :file:`.env`, `direnv "
+"`_ automagically activates the environment."
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:435
+msgid "Install it on Mac OS X using ``brew``:"
+msgstr ""
+
+#: ../../dev/virtualenvs.rst:441
+msgid "On Linux follow the instructions at `direnv.net `_"
+msgstr ""
+
diff --git a/locales/zh_CN/LC_MESSAGES/index.po b/locales/zh_CN/LC_MESSAGES/index.po
new file mode 100644
index 000000000..650493789
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/index.po
@@ -0,0 +1,170 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# xinetzone <735613050@qq.com>, 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-11-18 16:06+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: xinetzone <735613050@qq.com>\n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../docs/index.rst:6
+msgid ""
+"An opinionated guide to the Python programming language and a best "
+"practice handbook for the installation, configuration, and usage of "
+"Python on a daily basis."
+msgstr ""
+"这是一本关于 Python 编程语言主观的指南,"
+"也是一本关于 Python 的安装、配置和日常使用的最佳实践手册。"
+
+#: ../../docs/index.rst:12
+msgid "The Hitchhiker's Guide to Python!"
+msgstr "Python 搭车指南!"
+
+#: ../../docs/index.rst:14
+msgid "Greetings, Earthling! Welcome to The Hitchhiker's Guide to Python."
+msgstr "你好,地球人!欢迎来到 《Python 搭车指南》。"
+
+#: ../../docs/index.rst:16
+msgid ""
+"**This is a living, breathing guide.** If you'd like to contribute, "
+"`fork us on GitHub `_!"
+msgstr ""
+"**这是一份活着的、会呼吸的指南**。"
+"如果你想做出贡献,`fork 我们的 GitHub "
+"`_ !"
+
+#: ../../docs/index.rst:19
+msgid ""
+"This handcrafted guide exists to provide both novice and expert Python "
+"developers a best practice handbook for the installation, configuration, "
+"and usage of Python on a daily basis."
+msgstr ""
+"这本手工制作的指南旨在为 Python 新手和专业开发者提供"
+"一本关于 Python 的安装、配置和日常使用的最佳实践手册。"
+
+#: ../../docs/index.rst:23
+msgid ""
+"This guide is **opinionated** in a way that is almost, but not quite, "
+"entirely *unlike* Python's official documentation. You won't find a list "
+"of every Python web framework available here. Rather, you'll find a nice "
+"concise list of highly recommended options."
+msgstr ""
+"本指南是固执己见的,其方式几乎,但不完全,完全不像 Python 的官方文档。"
+"你不会在这里找到所有可用的 Python 网络框架的列表。"
+"相反,你会发现一个简明扼要的高度推荐选择清单。"
+
+#: ../../docs/index.rst:28
+msgid ""
+"The use of **Python 3** is *highly* recommended over Python 2. Consider "
+"upgrading your applications and infrastructures if you find yourself "
+"*still* using Python 2 in production today. If you are using Python 3, "
+"congratulations — you are indeed a person of excellent taste. —*Kenneth "
+"Reitz*"
+msgstr ""
+"强烈建议使用 **Python 3**,而不是 Python 2。"
+"如果你发现自己今天仍在生产中使用 Python 2,请考虑升级你的应用程序和基础设施。"
+"如果你正在使用 Python 3,那么恭喜你 —— 你确实是一个有品位的人。"
+"—— *Kenneth Reitz*"
+
+#: ../../docs/index.rst:31
+msgid ""
+"Let's get started! But first, let's make sure you know where your towel "
+"is."
+msgstr ""
+"让我们开始吧! 但首先,让我们确保你知道你的浴巾在哪里。"
+"(译者注:towel 浴巾的梗引自著名科幻小说《银河系漫游指南》,大概是说先准备好不起眼但很重要的东西。)"
+
+#: ../../docs/contents.rst.inc:2
+msgid "Getting Started with Python"
+msgstr "Python 入门篇"
+
+#: ../../docs/contents.rst.inc:4
+msgid "New to Python? Let's properly setup up your Python environment:"
+msgstr "初次接触 Python?让我们适当地设置一下你的 Python 环境:"
+
+#: ../../docs/contents.rst.inc:11
+msgid "Properly Install Python on your system:"
+msgstr "在系统中正确安装 Python:"
+
+#: ../../docs/contents.rst.inc:25
+msgid "Using Virtualenvs with Pipenv:"
+msgstr "在 Pipenv 中使用 Virtualenvs:"
+
+#: ../../docs/contents.rst.inc:34
+msgid "Python Development Environments"
+msgstr "Python 开发环境"
+
+#: ../../docs/contents.rst.inc:36
+msgid ""
+"This part of the guide focuses on the Python development environment, and"
+" the best-practice tools that are available for writing Python code."
+msgstr ""
+"这部分指南的重点是 Python 开发环境,以及可用于编写 Python 代码的最佳实践工具。"
+
+#: ../../docs/contents.rst.inc:50
+msgid "Writing Great Python Code"
+msgstr "编写优雅的 Python 代码"
+
+#: ../../docs/contents.rst.inc:52
+msgid ""
+"This part of the guide focuses on the best-practices for writing Python "
+"code."
+msgstr ""
+"这部分指南的重点是编写 Python 代码的最佳实践。"
+
+#: ../../docs/contents.rst.inc:69
+msgid "Scenario Guide for Python Applications"
+msgstr "Python 应用场景指南"
+
+#: ../../docs/contents.rst.inc:71
+msgid ""
+"This part of the guide focuses on tool and module advice based on "
+"different scenarios."
+msgstr ""
+"指南的这一部分侧重于基于不同场景的工具和模块建议。"
+
+#: ../../docs/contents.rst.inc:98
+msgid "Shipping Great Python Code"
+msgstr "运用伟大的 Python 代码"
+
+#: ../../docs/contents.rst.inc:100
+msgid "This part of the guide focuses on sharing and deploying your Python code."
+msgstr "这一部分指南的重点是分享和部署你的 Python 代码。"
+
+#: ../../docs/contents.rst.inc:111
+msgid "Additional Notes"
+msgstr "补充说明"
+
+#: ../../docs/contents.rst.inc:113
+msgid ""
+"This part of the guide, which is mostly prose, begins with some "
+"background information about Python, and then focuses on next steps."
+msgstr ""
+"指南的这一部分主要是序言,首先是关于 Python 的一些背景信息,然后重点是下一步。"
+
+#: ../../docs/contents.rst.inc:126
+msgid ""
+"Notes defined within all diatonic and chromatic musical scales have been "
+"intentionally excluded from this list of additional notes. Additionally, "
+"this note."
+msgstr ""
+
+#: ../../docs/contents.rst.inc:133
+msgid "Contribution notes and legal information (for those interested)."
+msgstr "贡献说明和法律信息(供感兴趣的人参考)。"
+
diff --git a/locales/zh_CN/LC_MESSAGES/intro/community.po b/locales/zh_CN/LC_MESSAGES/intro/community.po
new file mode 100644
index 000000000..274425f70
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/intro/community.po
@@ -0,0 +1,214 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../intro/community.rst:6
+msgid "The Community"
+msgstr "社区"
+
+#: ../../intro/community.rst:13
+msgid "BDFL"
+msgstr ""
+
+#: ../../intro/community.rst:15
+msgid ""
+"Guido van Rossum, the creator of Python, is often referred to as the BDFL"
+" — the Benevolent Dictator For Life."
+msgstr ""
+"Python 的创始人 Guido van Rossum 通常被称为 BDFL —— 生活的仁慈独裁者。"
+
+#: ../../intro/community.rst:21
+msgid "Python Software Foundation"
+msgstr "Python 软件基金会"
+
+#: ../../intro/community.rst:24
+msgid ""
+"The mission of the Python Software Foundation is to promote, protect, and"
+" advance the Python programming language, and to support and facilitate "
+"the growth of a diverse and international community of Python "
+"programmers."
+msgstr ""
+"Python 软件基金会的任务是促进、保护和发展 Python 编程语言,"
+"同时支持和帮助 Python 编程者在多样化、国际化的社区中成长。"
+
+#: ../../intro/community.rst:28
+msgid "`Learn More about the PSF `_."
+msgstr "`了解更多关于 PSF `_。"
+
+#: ../../intro/community.rst:33
+msgid "PEPs"
+msgstr ""
+
+#: ../../intro/community.rst:35
+msgid ""
+"PEPs are *Python Enhancement Proposals*. They describe changes to Python "
+"itself, or the standards around it."
+msgstr ""
+"PEPs 是 *Python 增强提议* (Python Enhancement Proposals)。它们描述了 Python 自身或者相关库的变化。"
+
+#: ../../intro/community.rst:38
+msgid "There are three different types of PEPs (as defined by :pep:`1`):"
+msgstr "这里有三种不同的 PEPs 类型(由 :pep:`1` 定义):"
+
+#: ../../intro/community.rst:41
+msgid "**Standards**"
+msgstr ""
+
+#: ../../intro/community.rst:41
+msgid "Describes a new feature or implementation."
+msgstr "描述一项新特性或者实现。"
+
+#: ../../intro/community.rst:45
+msgid "**Informational**"
+msgstr ""
+
+#: ../../intro/community.rst:44
+msgid ""
+"Describes a design issue, general guidelines, or information to the "
+"community."
+msgstr "描述一个设计 issue、通用方针、或者社区信息。"
+
+#: ../../intro/community.rst:49
+msgid "**Process**"
+msgstr ""
+
+#: ../../intro/community.rst:48
+msgid "Describes a process related to Python."
+msgstr "描述和 Python 相关的过程。"
+
+#: ../../intro/community.rst:52
+msgid "Notable PEPs"
+msgstr "著名的 PEPs"
+
+#: ../../intro/community.rst:54
+msgid "There are a few PEPs that could be considered required reading:"
+msgstr "这里有少许 PEPs 可以认为是要求必读的:"
+
+#: ../../intro/community.rst:57
+msgid ":pep:`8`: The Python Style Guide."
+msgstr ":pep:`8`:Python 风格指南。"
+
+#: ../../intro/community.rst:57
+msgid "Read this. All of it. Follow it."
+msgstr "完整阅读它,并照着做。"
+
+#: ../../intro/community.rst:60
+msgid ":pep:`20`: The Zen of Python."
+msgstr ":pep:`20`:Python 之禅。"
+
+#: ../../intro/community.rst:60
+msgid "A list of 19 statements that briefly explain the philosophy behind Python."
+msgstr "一个 19 行的小诗,简述了 Python 背后的哲学。"
+
+#: ../../intro/community.rst:64
+msgid ":pep:`257`: Docstring Conventions."
+msgstr ":pep:`257`:文档字符串约定。"
+
+#: ../../intro/community.rst:63
+msgid ""
+"Gives guidelines for semantics and conventions associated with Python "
+"docstrings."
+msgstr "给出了与 Python 文档字符串相关的语义和约定的指导方针。"
+
+#: ../../intro/community.rst:66
+msgid "You can read more at `The PEP Index `_."
+msgstr "您可以在 `PEP 索引 `_ 上了解更多。"
+
+#: ../../intro/community.rst:69
+msgid "Submitting a PEP"
+msgstr "提交一个 PEP"
+
+#: ../../intro/community.rst:71
+msgid ""
+"PEPs are peer-reviewed and accepted/rejected after much discussion. "
+"Anyone can write and submit a PEP for review."
+msgstr ""
+"PEPs 会被同行审阅,并在大量的讨论后决定接受或拒绝。任何人都能编写和提交 PEP 供以审阅。"
+
+#: ../../intro/community.rst:74
+msgid "Here's an overview of the PEP acceptance workflow:"
+msgstr "这里有一个接受 PEP 的工作流:"
+
+#: ../../intro/community.rst:81
+msgid "Python Conferences"
+msgstr "Python 会议"
+
+#: ../../intro/community.rst:83
+msgid ""
+"The major events for the Python community are developer conferences. The "
+"two most notable conferences are PyCon, which is held in the US, and its "
+"European sibling, EuroPython."
+msgstr ""
+"Python 社区主要的事件就是开发者会议。"
+"两个最著名的会议就是在美国举办的 PyCon,和在欧洲举办的姊妹版会议 EuroPython。"
+
+#: ../../intro/community.rst:87
+msgid ""
+"A comprehensive list of conferences is maintained at `pycon.org "
+"`_."
+msgstr ""
+"会议的综合列表维护在 `pycon.org `_ 上。"
+
+#: ../../intro/community.rst:92
+msgid "Python User Groups"
+msgstr "Python 用户组"
+
+#: ../../intro/community.rst:94
+msgid ""
+"User Groups are where a bunch of Python developers meet to present or "
+"talk about Python topics of interest. A list of local user groups is "
+"maintained at the `Python Software Foundation Wiki "
+"`_."
+msgstr ""
+"用户组就是一群 Python 开发者见面现身或讨论感兴趣的 Python 话题的地方。"
+"一系列本地用户组维护在 `Python 软件基金会 Wiki `_ 中。"
+
+#: ../../intro/community.rst:101
+msgid "Online Communities"
+msgstr "在线社区"
+
+#: ../../intro/community.rst:103
+msgid ""
+"`PythonistaCafe `_ is an invite-only, "
+"online community of Python and software development enthusiasts helping "
+"each other succeed and grow. Think of it as a club of mutual improvement "
+"for Pythonistas where a broad range of programming questions, career "
+"advice, and other topics are discussed every day."
+msgstr ""
+"`PythonistaCafe `_ 是一个只接受邀请的 Python 和软件开发爱好者的在线社区,"
+"他们互相帮助,共同成功,共同成长。"
+"可以把它看作是 Pythonistas 的一个共同提高的俱乐部,在这里每天都会讨论广泛的编程问题、职业建议和其他话题。"
+
+#: ../../intro/community.rst:111
+msgid "Python Job Boards"
+msgstr "Python 工作公告栏"
+
+#: ../../intro/community.rst:113
+msgid ""
+"`Python Jobs HQ `_ is a Python job board, "
+"by Python Developers for Python Developers. The site aggregates Python "
+"job postings from across the web and also allows employers to post Python"
+" job openings directly on the site."
+msgstr ""
+"`Python Jobs HQ `_ 是一个面向 Python 开发人员的 Python 工作公告栏。"
+"该网站汇总了发布自网络的 Python 职位,并允许雇主直接在网站上发布 Python 职位。"
diff --git a/locales/zh_CN/LC_MESSAGES/intro/documentation.po b/locales/zh_CN/LC_MESSAGES/intro/documentation.po
new file mode 100644
index 000000000..de3fb067b
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/intro/documentation.po
@@ -0,0 +1,81 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../intro/documentation.rst:5
+msgid "Documentation"
+msgstr "文档"
+
+#: ../../intro/documentation.rst:12
+msgid "Official Documentation"
+msgstr "官方文档"
+
+#: ../../intro/documentation.rst:14
+msgid "The official Python Language and Library documentation can be found here:"
+msgstr "Python 语言和库的官方文档能够在这里找到:"
+
+#: ../../intro/documentation.rst:16
+msgid "`Python 2.x `_"
+msgstr ""
+
+#: ../../intro/documentation.rst:17
+msgid "`Python 3.x `_"
+msgstr ""
+
+#: ../../intro/documentation.rst:22
+msgid "Read the Docs"
+msgstr ""
+
+#: ../../intro/documentation.rst:24
+msgid ""
+"Read the Docs is a popular community project that hosts documentation for"
+" open source software. It holds documentation for many Python modules, "
+"both popular and exotic."
+msgstr ""
+"Read the Docs 是一个流行的社区项目,存放着开源软件的文档。它拥有很多 Python 模块,优秀且流行。"
+
+#: ../../intro/documentation.rst:28
+msgid "`Read the Docs `_"
+msgstr ""
+
+#: ../../intro/documentation.rst:33
+msgid "pydoc"
+msgstr ""
+
+#: ../../intro/documentation.rst:35
+msgid ""
+":program:`pydoc` is a utility that is installed when you install Python. "
+"It allows you to quickly retrieve and search for documentation from your "
+"shell. For example, if you needed a quick refresher on the :mod:`time` "
+"module, pulling up documentation would be as simple as:"
+msgstr ""
+":program:`pydoc` 是一个在您安装 Python 时跟着安装的工具。"
+"它允许您在 shell 中快速检索和查找文档。"
+"比如,如果您需要对 :mod:`time` 模块的进行快速回顾,查看文档就是像下面这么简单:"
+
+#: ../../intro/documentation.rst:44
+msgid ""
+"The above command is essentially equivalent to opening the Python REPL "
+"and running:"
+msgstr ""
+"上面的命令和打开 Python REPL 然后运行下面指令是基本等价的:"
diff --git a/locales/zh_CN/LC_MESSAGES/intro/duction.po b/locales/zh_CN/LC_MESSAGES/intro/duction.po
new file mode 100644
index 000000000..b825b698d
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/intro/duction.po
@@ -0,0 +1,174 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# xinetzone <735613050@qq.com>, 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: xinetzone <735613050@qq.com>\n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../intro/duction.rst:5
+msgid "Introduction"
+msgstr "介绍"
+
+#: ../../intro/duction.rst:9
+msgid "From the `official Python website `_:"
+msgstr "来自 `Python 官方网站 `_"
+
+#: ../../intro/duction.rst:11
+msgid ""
+"Python is a general-purpose, high-level programming language similar to "
+"Tcl, Perl, Ruby, Scheme, or Java. Some of its main key features include:"
+msgstr ""
+"Python 是一种类似于 Tcl、Perl、Ruby、Scheme 或 Java 通用的高级编程语言。"
+"它的一些主要特点包括:"
+
+#: ../../intro/duction.rst:15
+msgid "**very clear, readable syntax**"
+msgstr "**非常清晰、可读的语法**"
+
+#: ../../intro/duction.rst:17
+msgid ""
+"Python's philosophy focuses on readability, from code blocks delineated "
+"with significant whitespace to intuitive keywords in place of inscrutable"
+" punctuation."
+msgstr ""
+"Python 的理念侧重于可读性,从用大量空白划定的代码块到用直观的关键词代替难以捉摸的标点符号。"
+
+#: ../../intro/duction.rst:21
+msgid ""
+"**extensive standard libraries and third party modules for virtually any "
+"task**"
+msgstr ""
+"大量的标准库和第三方模块可用于几乎任何任务"
+
+#: ../../intro/duction.rst:24
+msgid ""
+"Python is sometimes described with the words \"batteries included\" "
+"because of its extensive `standard library "
+"`_, which includes modules for regular "
+"expressions, file IO, fraction handling, object serialization, and much "
+"more."
+msgstr ""
+"Python 有时被描述为 \"自带电池(batteries included)\","
+"就是因为它拥有大量的 `标准库 `_,"
+"这包括正则表达式、文件 IO、分数处理、对象序列化等。"
+
+#: ../../intro/duction.rst:30
+msgid ""
+"Additionally, the `Python Package Index `_ is available"
+" for users to submit their packages for widespread use, similar to Perl's"
+" `CPAN `_. There is a thriving community of very "
+"powerful Python frameworks and tools like the `Django "
+"`_ web framework and the `NumPy "
+"`_ set of math routines."
+msgstr ""
+
+#: ../../intro/duction.rst:38
+msgid "**integration with other systems**"
+msgstr ""
+
+#: ../../intro/duction.rst:40
+msgid ""
+"Python can integrate with `Java libraries `_, "
+"enabling it to be used with the rich Java environment that corporate "
+"programmers are used to. It can also be `extended by C or C++ modules "
+"`_ when speed is of the essence."
+msgstr ""
+
+#: ../../intro/duction.rst:46
+msgid "**ubiquity on computers**"
+msgstr ""
+
+#: ../../intro/duction.rst:48
+msgid ""
+"Python is available on Windows, \\*nix, and Mac. It runs wherever the "
+"Java virtual machine runs, and the reference implementation CPython can "
+"help bring Python to wherever there is a working C compiler."
+msgstr ""
+
+#: ../../intro/duction.rst:52
+msgid "**friendly community**"
+msgstr ""
+
+#: ../../intro/duction.rst:54
+msgid ""
+"Python has a vibrant and large :ref:`community ` which "
+"maintains wikis, conferences, countless repositories, mailing lists, IRC "
+"channels, and so much more. Heck, the Python community is even helping to"
+" write this guide!"
+msgstr ""
+
+#: ../../intro/duction.rst:65
+msgid "About This Guide"
+msgstr "关于这份指南"
+
+#: ../../intro/duction.rst:68
+msgid "Purpose"
+msgstr "目的"
+
+#: ../../intro/duction.rst:70
+msgid ""
+"The Hitchhiker's Guide to Python exists to provide both novice and expert"
+" Python developers a best practice handbook for the installation, "
+"configuration, and usage of Python on a daily basis."
+msgstr ""
+"Hitchhiker 的 Python 指南旨在为 Python 初学者和专家提供一个关于 Python 安装、配置和日常使用的最佳实践手册。"
+
+#: ../../intro/duction.rst:76
+msgid "By the Community"
+msgstr "经由社区"
+
+#: ../../intro/duction.rst:78
+msgid ""
+"This guide is architected and maintained by `Kenneth Reitz "
+"`_ in an open fashion. This is a "
+"community-driven effort that serves one purpose: to serve the community."
+msgstr ""
+"本指南由 `Kenneth Reitz `_ 以开放的形式进行架构和维护。"
+"这是由社区驱动的成果,服务目标就是服务社区。"
+
+#: ../../intro/duction.rst:83
+msgid "For the Community"
+msgstr "面向社区"
+
+#: ../../intro/duction.rst:85
+msgid ""
+"All contributions to the Guide are welcome, from Pythonistas of all "
+"levels. If you think there's a gap in what the Guide covers, fork the "
+"Guide on GitHub and submit a pull request."
+msgstr ""
+"所有水平的 Python 编程者对本指南所有的贡献都是欢迎的。"
+"如果您觉得本指南没有覆盖到某些内容,请在 GitHub 上 fork 指南,并提交一个 pull 请求。
+
+#: ../../intro/duction.rst:89
+msgid ""
+"Contributions are welcome from everyone, whether they're an old hand or a"
+" first-time Pythonista, and the authors to the Guide will gladly help if "
+"you have any questions about the appropriateness, completeness, or "
+"accuracy of a contribution."
+msgstr ""
+"欢迎每个人的贡献,不管是高手还是新手。"
+"如果您对提交的合适性、完成度或者准确度方面有任何疑问,本指南的作者会非常愿意帮助您。"
+
+#: ../../intro/duction.rst:94
+msgid ""
+"To get started working on The Hitchhiker's Guide, see the "
+":doc:`/notes/contribute` page."
+msgstr ""
+"想要开始为 Hitchhiker 的指南做贡献,请见 :doc:`/notes/contribute` 页面。"
diff --git a/locales/zh_CN/LC_MESSAGES/intro/learning.po b/locales/zh_CN/LC_MESSAGES/intro/learning.po
new file mode 100644
index 000000000..00517580f
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/intro/learning.po
@@ -0,0 +1,817 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../intro/learning.rst:5
+msgid "Learning Python"
+msgstr "学习 Python"
+
+#: ../../intro/learning.rst:12
+msgid "Beginner"
+msgstr "初学者"
+
+#: ../../intro/learning.rst:15
+msgid "The Python Tutorial"
+msgstr "Python 教程"
+
+#: ../../intro/learning.rst:17
+msgid ""
+"This is the official tutorial. It covers all the basics, and offers a "
+"tour of the language and the standard library. Recommended for those who "
+"need a quick-start guide to the language."
+msgstr ""
+"这是官方教程。它涵盖了所有的基础,并提供了 Python 语言和标准库的浏览。推荐给需要快速开始的人。"
+
+#: ../../intro/learning.rst:21
+msgid "`The Python Tutorial `_"
+msgstr "`Python 教程 `_"
+
+#: ../../intro/learning.rst:24
+msgid "Real Python"
+msgstr ""
+
+#: ../../intro/learning.rst:26
+msgid ""
+"Real Python is a repository of free and in-depth Python tutorials created"
+" by a diverse team of professional Python developers. At Real Python you "
+"can learn all things Python from the ground up. Everything from the "
+"absolute basics of Python, to web development and web scraping, to data "
+"visualization, and beyond."
+msgstr ""
+"Real Python 是由各种专业的 Python 开发团队创建的免费且深入的 Python 教程库。"
+"在 Real Python 中,您可以从头开始学习 Python 的所有内容。"
+"从 Python 的最基础的知识到 Web 开发和 Web 爬取,再到数据可视化等等。"
+
+#: ../../intro/learning.rst:28
+msgid "`Real Python `_"
+msgstr ""
+
+#: ../../intro/learning.rst:31
+msgid "Python Basics"
+msgstr "Python 基础"
+
+#: ../../intro/learning.rst:33
+msgid ""
+"pythonbasics.org is an introductory tutorial for beginners. The tutorial "
+"includes exercises. It covers the basics and there are also in-depth "
+"lessons like object oriented programming and regular expressions."
+msgstr ""
+"pythonbasics.org 是初学者的入门教程,包括练习、涵盖了基础知识,还有深入的课程(如面向对象编程和正则表达式)。"
+
+#: ../../intro/learning.rst:35
+msgid "`Python basics `_"
+msgstr "`Python 基础 `_"
+
+#: ../../intro/learning.rst:38
+msgid "Python for Beginners"
+msgstr ""
+
+#: ../../intro/learning.rst:40
+msgid ""
+"thepythonguru.com is a tutorial focused on beginner programmers. It "
+"covers many Python concepts in depth. It also teaches you some advanced "
+"constructs of Python like lambda expressions and regular expressions. And"
+" last it finishes off with the tutorial \"How to access MySQL db using "
+"Python\""
+msgstr ""
+"thepythonguru.com 是一个专注于初学程序员的教程。它深入涵盖了许多 Python 概念。"
+"它还教您一些 Python 的高级概念,如 lambda 表达式、正则表达式等。"
+"最后,它以教程 \"如何使用 Python 访问 MySQL 数据库\" 结束。"
+
+#: ../../intro/learning.rst:44
+msgid "`Python for Beginners `_"
+msgstr ""
+
+#: ../../intro/learning.rst:47
+msgid "Learn Python Interactive Tutorial"
+msgstr ""
+
+#: ../../intro/learning.rst:49
+msgid ""
+"Learnpython.org is an easy non-intimidating way to get introduced to "
+"Python. The website takes the same approach used on the popular `Try Ruby"
+" `_ website. It has an interactive Python"
+" interpreter built into the site that allows you to go through the "
+"lessons without having to install Python locally."
+msgstr ""
+"Learnpython.org 是一个简单易懂的了解 Python 的途径。"
+"网站采用了和流行的 Try Ruby 相同的方式,有一个交互式的 Python 解释器内建于网站中,"
+"允许您在学习 Python 课程时不需要在本地安装 Python。"
+
+#: ../../intro/learning.rst:55
+msgid "`Learn Python `_"
+msgstr ""
+
+#: ../../intro/learning.rst:58
+msgid "Python for You and Me"
+msgstr ""
+
+#: ../../intro/learning.rst:60
+msgid ""
+"If you want a more traditional book, *Python For You and Me* is an "
+"excellent resource for learning all aspects of the language."
+msgstr ""
+"如果您想要更加传统的书籍,Python For You and Me 是一个极佳的学习 Python 所有方面的资源。"
+
+#: ../../intro/learning.rst:63
+msgid "`Python for You and Me `_"
+msgstr ""
+
+#: ../../intro/learning.rst:66
+msgid "Learn Python Step by Step"
+msgstr ""
+
+#: ../../intro/learning.rst:68
+msgid ""
+"Techbeamers.com provides step-by-step tutorials to teach Python. Each "
+"tutorial is supplemented with logically added coding snippets and equips "
+"with a follow-up quiz on the subject learned. There is a section for "
+"`Python interview questions `_ to help job seekers. You can also read"
+" essential `Python tips `_ and learn `best coding practices "
+"`_ for "
+"writing quality code. Here, you'll get the right platform to learn Python"
+" quickly."
+msgstr ""
+"Techbeamers.com 提供了手把手的教程讲解 Python。"
+"每个教程都补充了相关代码段,并配备了关于所学主题的后续测验。"
+"里面的 `Python 面试题 `_ 部分可以帮助求职者。"
+"您还可以阅读必备的 `Python 技巧 `_,"
+"并学习编写高质量代码的 `最佳编程实践 `_。"
+"在这里,你将获得快速学习 Python 的正确平台。"
+
+#: ../../intro/learning.rst:70
+msgid ""
+"`Learn Python Basic to Advanced `_"
+msgstr ""
+
+#: ../../intro/learning.rst:74
+msgid "Online Python Tutor"
+msgstr ""
+
+#: ../../intro/learning.rst:76
+msgid ""
+"Online Python Tutor gives you a visual step-by-step representation of how"
+" your program runs. Python Tutor helps people overcome a fundamental "
+"barrier to learning programming by understanding what happens as the "
+"computer executes each line of a program's source code."
+msgstr ""
+"Online Python Tutor 在视觉上向您一步步展示程序是如何运行的。"
+"Python Tutor 帮助人们克服 学习编程的基本障碍,让您明白程序源码中的每一行的执行会有怎样的结果。"
+
+#: ../../intro/learning.rst:82
+msgid "`Online Python Tutor `_"
+msgstr ""
+
+#: ../../intro/learning.rst:85
+msgid "Invent Your Own Computer Games with Python"
+msgstr ""
+
+#: ../../intro/learning.rst:87
+msgid ""
+"This beginner's book is for those with no programming experience at all. "
+"Each chapter has the source code to a small game, using these example "
+"programs to demonstrate programming concepts to give the reader an idea "
+"of what programs \"look like\"."
+msgstr ""
+"这个新手书籍是面向没有任何编程经验的对象。"
+"每个章节都有一个小游戏的源码,这些程序例子说明了 编程概念,让读者了解到程序是什么样的。"
+
+#: ../../intro/learning.rst:92
+msgid ""
+"`Invent Your Own Computer Games with Python "
+"`_"
+msgstr ""
+
+#: ../../intro/learning.rst:96
+msgid "Hacking Secret Ciphers with Python"
+msgstr ""
+
+#: ../../intro/learning.rst:98
+msgid ""
+"This book teaches Python programming and basic cryptography for absolute "
+"beginners. The chapters provide the source code for various ciphers, as "
+"well as programs that can break them."
+msgstr ""
+"此书向完全的新手讲解了 Python 编程和基本的密码学知识。所有章节提供了多种加密源码,也提供了破解程序。"
+
+#: ../../intro/learning.rst:102
+msgid ""
+"`Hacking Secret Ciphers with Python "
+"`_"
+msgstr ""
+
+#: ../../intro/learning.rst:106
+msgid "Learn Python the Hard Way"
+msgstr ""
+
+#: ../../intro/learning.rst:108
+msgid ""
+"This is an excellent beginner programmer's guide to Python. It covers "
+"\"hello world\" from the console to the web."
+msgstr ""
+"这是一部极佳的新手编程者的 Python 指南。它涵盖了从控制台到 web 的 \"hello world\"。"
+
+#: ../../intro/learning.rst:111
+msgid "`Learn Python the Hard Way `_"
+msgstr ""
+
+#: ../../intro/learning.rst:115
+msgid "Crash into Python"
+msgstr ""
+
+#: ../../intro/learning.rst:117
+msgid ""
+"Also known as *Python for Programmers with 3 Hours*, this guide gives "
+"experienced developers from other languages a crash course on Python."
+msgstr ""
+"这个指南也叫 *Python for Programmers with 3 Hours* ,"
+"它给有其他语言开发经验的开发人员提供一个关于 Python 的快速教程。"
+
+#: ../../intro/learning.rst:120
+msgid "`Crash into Python `_"
+msgstr ""
+
+#: ../../intro/learning.rst:124
+msgid "Dive Into Python 3"
+msgstr ""
+
+#: ../../intro/learning.rst:126
+msgid ""
+"Dive Into Python 3 is a good book for those ready to jump in to Python 3."
+" It's a good read if you are moving from Python 2 to 3 or if you already "
+"have some experience programming in another language."
+msgstr ""
+"Dive Into Python 3 对准备使用 Python 3 的人来说是一本不错的书。"
+"如果您是从 Python 2 迁移到 Python 3 或者您已经有其他语言的编程经验,那么将会很好阅读。"
+
+#: ../../intro/learning.rst:130
+msgid "`Dive Into Python 3 `_"
+msgstr ""
+
+#: ../../intro/learning.rst:134
+msgid "Think Python: How to Think Like a Computer Scientist"
+msgstr ""
+
+#: ../../intro/learning.rst:136
+msgid ""
+"Think Python attempts to give an introduction to basic concepts in "
+"computer science through the use of the Python language. The focus was to"
+" create a book with plenty of exercises, minimal jargon, and a section in"
+" each chapter devoted to the subject of debugging."
+msgstr ""
+"Think Python 通过使用 Python 语言来介绍计算机科学中的基本概念。"
+"重点是创建一本有大量练习的书,尽量减少专业术语,并在每一章中都有一节专门讨论调试的主题"。"
+
+#: ../../intro/learning.rst:141
+msgid ""
+"While exploring the various features available in the Python language the"
+" author weaves in various design patterns and best practices."
+msgstr ""
+"在探索 Python 语言的各种功能时,作者将各种设计模式和最佳实践编织在一起。"
+
+#: ../../intro/learning.rst:144
+msgid ""
+"The book also includes several case studies which have the reader explore"
+" the topics discussed in the book in greater detail by applying those "
+"topics to real-world examples. Case studies include assignments in GUI "
+"programming and Markov Analysis."
+msgstr ""
+"此书中还包括一些案例研究,将书中的主题应用到实际例子中,供读者对主题进行更深入的讨论。"
+"案例研究包括 GUI 和 Markov 分析的任务。"
+
+#: ../../intro/learning.rst:149
+msgid "`Think Python `_"
+msgstr ""
+
+#: ../../intro/learning.rst:153
+msgid "Python Koans"
+msgstr ""
+
+#: ../../intro/learning.rst:155
+msgid ""
+"Python Koans is a port of Edgecase's Ruby Koans. It uses a test-driven "
+"approach to provide an interactive tutorial teaching basic Python "
+"concepts. By fixing assertion statements that fail in a test script, "
+"this provides sequential steps to learning Python."
+msgstr ""
+"Python Koans 是 Edgecase's Ruby Koans 的迁移版。"
+"它使用测试驱动的方法提供一个交互式的教程,来讲解基本的 Python 概念。"
+"通过修复在测试脚本中失败的断言,从而提供连续的步骤来学习 Python。"
+
+#: ../../intro/learning.rst:160
+msgid ""
+"For those used to languages and figuring out puzzles on their own, this "
+"can be a fun, attractive option. For those new to Python and programming,"
+" having an additional resource or reference will be helpful."
+msgstr ""
+"对于那些使用语言并找出自己的困惑的人来说,这会是个有趣并有吸引力的选择。"
+"对于新手来说,拥有一个额外的资源或者参考会是很有用的。"
+
+#: ../../intro/learning.rst:164
+msgid "`Python Koans `_"
+msgstr ""
+
+#: ../../intro/learning.rst:166
+msgid ""
+"More information about test driven development can be found at these "
+"resources:"
+msgstr "要了解更多关于测试驱动开发的内容,可以查看以下资源:"
+
+#: ../../intro/learning.rst:168
+msgid ""
+"`Test Driven Development `_"
+msgstr ""
+"`测试驱动开发 `_"
+
+#: ../../intro/learning.rst:172
+msgid "A Byte of Python"
+msgstr ""
+
+#: ../../intro/learning.rst:174
+msgid ""
+"A free introductory book that teaches Python at the beginner level, it "
+"assumes no previous programming experience."
+msgstr "一本为新手讲解 Python 的免费入门书籍,它假定读者没有编程经验。"
+
+#: ../../intro/learning.rst:177
+msgid ""
+"`A Byte of Python for Python 2.x "
+"`_ `A Byte of Python"
+" for Python 3.x `_"
+msgstr ""
+
+#: ../../intro/learning.rst:182
+msgid "Computer Science Path on Codecademy"
+msgstr ""
+
+#: ../../intro/learning.rst:184
+msgid ""
+"A Codecademy course for the absolute Python beginner. This free and "
+"interactive course provides and teaches the basics (and beyond) of Python"
+" programming while testing the user's knowledge in between progress. This"
+" course also features a built-in interpreter for receiving instant "
+"feedback on your learning."
+msgstr ""
+"此 Codeacademy 课程面向绝对的 Python 初学者。"
+"这门免费、互动的课程提供和教授 Python 编程的基础(和以后)的内容,同时测试用户之间知识的进展。"
+"课程还内置了一个解释器,用于获取学习过程中的即时反馈。"
+
+#: ../../intro/learning.rst:189
+msgid ""
+"`Computer Science Path on Codecademy "
+"`_"
+msgstr ""
+
+#: ../../intro/learning.rst:193
+msgid "Code the blocks"
+msgstr ""
+
+#: ../../intro/learning.rst:195
+msgid ""
+"*Code the blocks* provides free and interactive Python tutorials for "
+"beginners. It combines Python programming with a 3D environment where you"
+" \"place blocks\" and construct structures. The tutorials teach you how "
+"to use Python to create progressively more elaborate 3D structures, "
+"making the process of learning Python fun and engaging."
+msgstr ""
+"Code the blocks 为初学者提供免费的交互式 Python 教程。"
+"它将 Python 编程与 3D 环境相结合,您可以在其中 \"放置方块\" 并构建结构。"
+"本教程将教您如何使用 Python 创建逐渐精细的 3D 结构,从而使得学习 Python 的过程变得有趣和吸引人。"
+
+#: ../../intro/learning.rst:201
+msgid "`Code the blocks `_"
+msgstr ""
+
+#: ../../intro/learning.rst:206
+msgid "Intermediate"
+msgstr "中级"
+
+#: ../../intro/learning.rst:209
+msgid "Python Tricks: The Book"
+msgstr ""
+
+#: ../../intro/learning.rst:211
+msgid ""
+"Discover Python's best practices with simple examples and start writing "
+"even more beautiful + Pythonic code. *Python Tricks: The Book* shows you "
+"exactly how."
+msgstr ""
+"通过简单的示例发现 Python 的最佳实践,并开始编写更美观的且 Pythonic 的代码。"
+"*Python Tricks: The Book* 向您展示了具体方法。"
+
+#: ../../intro/learning.rst:213
+msgid ""
+"You’ll master intermediate and advanced-level features in Python with "
+"practical examples and a clear narrative."
+msgstr "您将通过实际示例和清晰的叙述掌握 Python 的中级和高级功能:"
+
+#: ../../intro/learning.rst:215
+msgid ""
+"`Python Tricks: The Book `_"
+msgstr ""
+
+#: ../../intro/learning.rst:218
+msgid "Effective Python"
+msgstr ""
+
+#: ../../intro/learning.rst:220
+msgid ""
+"This book contains 59 specific ways to improve writing Pythonic code. At "
+"227 pages, it is a very brief overview of some of the most common "
+"adaptations programmers need to make to become efficient intermediate "
+"level Python programmers."
+msgstr ""
+"本书包含 59 种具体方法来改进编写 Pythonic 代码。"
+"在这 227 页中,这是一个关于程序员需要做的一些最常见的程序以成为高效的中级 Python 程序员的非常简要的概述。"
+
+#: ../../intro/learning.rst:225
+msgid "`Effective Python `_"
+msgstr ""
+
+#: ../../intro/learning.rst:230
+msgid "Advanced"
+msgstr "高级"
+
+#: ../../intro/learning.rst:233
+msgid "Pro Python"
+msgstr ""
+
+#: ../../intro/learning.rst:235
+msgid ""
+"This book is for intermediate to advanced Python programmers who are "
+"looking to understand how and why Python works the way it does and how "
+"they can take their code to the next level."
+msgstr ""
+"面向从中级到高级,想明白 Python 是如何以及为何这样工作,如何将代码水平提高一级的 Python 程序员。"
+
+#: ../../intro/learning.rst:239
+msgid "`Pro Python `_"
+msgstr ""
+
+#: ../../intro/learning.rst:243
+msgid "Expert Python Programming"
+msgstr ""
+
+#: ../../intro/learning.rst:244
+msgid ""
+"Expert Python Programming deals with best practices in programming Python"
+" and is focused on the more advanced crowd."
+msgstr ""
+"Expert Python Programming 讲解编写 Python 的最佳实践,并专注更高级的人员。"
+
+#: ../../intro/learning.rst:247
+msgid ""
+"It starts with topics like decorators (with caching, proxy, and context "
+"manager case studies), method resolution order, using super() and meta-"
+"programming, and general :pep:`8` best practices."
+msgstr ""
+"它以诸如装饰器(伴随缓存、代理、上下文管理器、案例研究)、方法解析顺序、使用 super()、"
+"元编程和一般 :pep:`8` 上的最好实践开始。"
+
+#: ../../intro/learning.rst:251
+msgid ""
+"It has a detailed, multi-chapter case study on writing and releasing a "
+"package and eventually an application, including a chapter on using "
+"zc.buildout. Later chapters detail best practices such as writing "
+"documentation, test-driven development, version control, optimization, "
+"and profiling."
+msgstr ""
+"它有一个详细的、多章的关于编写的案例研究,发行了一个包并最终成为一个应用,包含使用 zc.buildout 的一个章节。"
+"后面的章节详细讲述了最佳实践,比如编写文档、测试驱动开发、版本控制、优化和分析。"
+
+#: ../../intro/learning.rst:256
+msgid ""
+"`Expert Python Programming `_"
+msgstr ""
+
+#: ../../intro/learning.rst:260
+msgid "A Guide to Python's Magic Methods"
+msgstr ""
+
+#: ../../intro/learning.rst:262
+msgid ""
+"This is a collection of blog posts by Rafe Kettler which explain 'magic "
+"methods' in Python. Magic methods are surrounded by double underscores "
+"(i.e. __init__) and can make classes and objects behave in different and "
+"magical ways."
+msgstr ""
+"这是 Rafe Kettler 发表博文的集合,解释了 Python 中的 '魔法方法'。"
+"魔法方法由双下划线包围 (比如 `__init__`),能够使类和对象表现出不同的、魔法的行为。"
+
+#: ../../intro/learning.rst:266
+msgid ""
+"`A Guide to Python's Magic Methods "
+"`_"
+msgstr ""
+
+#: ../../intro/learning.rst:268
+msgid ""
+"Rafekettler.com is currently down; you can go to their GitHub version "
+"directly. Here you can find a PDF version: `A Guide to Python's Magic "
+"Methods (repo on GitHub) "
+"`_"
+msgstr ""
+"Rafekettler.com 目前已关闭,您可以直接访问他们的 GitHub 版本。在这里您可以找到一个 "
+"`PDF 版本 `_。"
+
+#: ../../intro/learning.rst:274
+msgid "For Engineers and Scientists"
+msgstr "工程师和科学家"
+
+#: ../../intro/learning.rst:277
+msgid "A Primer on Scientific Programming with Python"
+msgstr ""
+
+#: ../../intro/learning.rst:279
+msgid ""
+"A Primer on Scientific Programming with Python, written by Hans Petter "
+"Langtangen, mainly covers Python's usage in the scientific field. In the "
+"book, examples are chosen from mathematics and the natural sciences."
+msgstr ""
+"A Primer on Scientific Programming with Python 由 Hans Petter Langtangen 编写,"
+"主要涵盖了 Python 在科学领域的使用。在这本书中,例子是从数学和自然科学中选出的。"
+
+#: ../../intro/learning.rst:283
+msgid ""
+"`A Primer on Scientific Programming with Python "
+"`_"
+msgstr ""
+
+#: ../../intro/learning.rst:286
+msgid "Numerical Methods in Engineering with Python"
+msgstr ""
+
+#: ../../intro/learning.rst:288
+msgid ""
+"Numerical Methods in Engineering with Python, written by Jaan Kiusalaas, "
+"puts the emphasis on numerical methods and how to implement them in "
+"Python."
+msgstr ""
+"Numerical Methods in Engineering with Python 由 Jaan Kiusalaas 编写,"
+"其重点是数值方法以及如何用 Python 来实现。"
+
+#: ../../intro/learning.rst:291
+msgid ""
+"`Numerical Methods in Engineering with Python "
+"`_"
+msgstr ""
+
+#: ../../intro/learning.rst:296
+msgid "Miscellaneous Topics"
+msgstr "各种各样的话题"
+
+#: ../../intro/learning.rst:299
+msgid "Problem Solving with Algorithms and Data Structures"
+msgstr ""
+
+#: ../../intro/learning.rst:301
+msgid ""
+"Problem Solving with Algorithms and Data Structures covers a range of "
+"data structures and algorithms. All concepts are illustrated with Python "
+"code along with interactive samples that can be run directly in the "
+"browser."
+msgstr ""
+"Problem Solving with Algorithms and Data Structures 涵盖了一系列数据结构和算法。"
+"所有概念都用 Python 代码说明,提供了可在浏览器中直接运行的交互式样例。"
+
+#: ../../intro/learning.rst:305
+msgid ""
+"`Problem Solving with Algorithms and Data Structures "
+"`_"
+msgstr ""
+
+#: ../../intro/learning.rst:309
+msgid "Programming Collective Intelligence"
+msgstr ""
+
+#: ../../intro/learning.rst:311
+msgid ""
+"Programming Collective Intelligence introduces a wide array of basic "
+"machine learning and data mining methods. The exposition is not very "
+"mathematically formal, but rather focuses on explaining the underlying "
+"intuition and shows how to implement the algorithms in Python."
+msgstr ""
+"Programming Collective Intelligence 介绍了大量基础的机器学习和数据挖掘方法。"
+"其展示在数学上并不是很正式,而是更侧重于解释潜在的直觉,以及展示如何使用 Python 来实现算法。"
+
+#: ../../intro/learning.rst:316
+msgid ""
+"`Programming Collective Intelligence "
+"`_"
+msgstr ""
+
+#: ../../intro/learning.rst:320
+msgid "Transforming Code into Beautiful, Idiomatic Python"
+msgstr ""
+
+#: ../../intro/learning.rst:322
+msgid ""
+"Transforming Code into Beautiful, Idiomatic Python is a video by Raymond "
+"Hettinger. Learn to take better advantage of Python's best features and "
+"improve existing code through a series of code transformations: \"When "
+"you see this, do that instead.\""
+msgstr ""
+"Transforming Code into Beautiful, Idiomatic Python 是由 Raymond Hettinger 制作的视频。"
+"通过它可以学习到更好地使用 Python 的最佳特性,通过一系列的代码转换来改进现有代码:\"当您看见这个,就那样去做\"。"
+
+#: ../../intro/learning.rst:326
+msgid ""
+"`Transforming Code into Beautiful, Idiomatic Python "
+"`_"
+msgstr ""
+
+#: ../../intro/learning.rst:330
+msgid "Fullstack Python"
+msgstr ""
+
+#: ../../intro/learning.rst:332
+msgid ""
+"Fullstack Python offers a complete top-to-bottom resource for web "
+"development using Python."
+msgstr "Fullstack Python 为使用 Python 进行 Web 开发提供了完整的自顶向下的资源。"
+
+#: ../../intro/learning.rst:335
+msgid ""
+"From setting up the web server, to designing the front-end, choosing a "
+"database, optimizing/scaling, etc."
+msgstr "范围涵盖从设置 Web 服务器到设计前端、选择数据库、优化/缩放等。"
+
+#: ../../intro/learning.rst:338
+msgid ""
+"As the name suggests, it covers everything you need to build and run a "
+"complete web app from scratch."
+msgstr "顾名思义,它涵盖了从头开始构建和运行完整的 Web 应用程序所需的所有内容。"
+
+#: ../../intro/learning.rst:341
+msgid "`Fullstack Python `_"
+msgstr ""
+
+#: ../../intro/learning.rst:345
+msgid "PythonistaCafe"
+msgstr ""
+
+#: ../../intro/learning.rst:347
+msgid ""
+"PythonistaCafe is an invite-only, online community of Python and software"
+" development enthusiasts helping each other succeed and grow. Think of it"
+" as a club of mutual improvement for Pythonistas where a broad range of "
+"programming questions, career advice, and other topics are discussed "
+"every day."
+msgstr ""
+"PythonistaCafe 是一个邀请式的在线社区,里面的 Python 和软件开发爱好者互帮互助、彼此成长。"
+"可以把它看做是 Pythonista 共同进行改进的俱乐部。"
+"在这里,每天都会讨论广泛的编程问题、职业建议,同时也会涉及其他主题。"
+
+#: ../../intro/learning.rst:349
+msgid "`PythonistaCafe `_"
+msgstr ""
+
+#: ../../intro/learning.rst:354
+msgid "References"
+msgstr "参考"
+
+#: ../../intro/learning.rst:357
+msgid "Python in a Nutshell"
+msgstr ""
+
+#: ../../intro/learning.rst:359
+msgid ""
+"Python in a Nutshell, written by Alex Martelli, covers most cross-"
+"platform Python usage, from its syntax to built-in libraries to advanced "
+"topics such as writing C extensions."
+msgstr ""
+"Python in a Nutshell 由 Alex Martelli 编写,涵盖了 Python 跨平台的多数用法,"
+"从它的语法到内建库,再到比如说编写 C 扩展的高级主题。"
+
+#: ../../intro/learning.rst:363
+msgid "`Python in a Nutshell `_"
+msgstr ""
+
+#: ../../intro/learning.rst:366
+msgid "The Python Language Reference"
+msgstr ""
+
+#: ../../intro/learning.rst:368
+msgid ""
+"This is Python's reference manual. It covers the syntax and the core "
+"semantics of the language."
+msgstr "这是 Python 的参考手册,它涵盖了这门语言的语法和核心语义。"
+
+#: ../../intro/learning.rst:371
+msgid ""
+"`The Python Language Reference "
+"`_"
+msgstr ""
+
+#: ../../intro/learning.rst:374
+msgid "Python Essential Reference"
+msgstr ""
+
+#: ../../intro/learning.rst:376
+msgid ""
+"Python Essential Reference, written by David Beazley, is the definitive "
+"reference guide to Python. It concisely explains both the core language "
+"and the most essential parts of the standard library. It covers Python 3 "
+"and 2.6 versions."
+msgstr ""
+"Python Essential Reference,由 David Beazley 撰写,是 Python 的最终参考指南。"
+"它简明扼要地解释了标准库的核心语言和最重要的部分。 它涵盖了 Python 3 和 2.6 版本。"
+
+#: ../../intro/learning.rst:380
+msgid "`Python Essential Reference `_"
+msgstr ""
+
+#: ../../intro/learning.rst:383
+msgid "Python Pocket Reference"
+msgstr ""
+
+#: ../../intro/learning.rst:385
+msgid ""
+"Python Pocket Reference, written by Mark Lutz, is an easy to use "
+"reference to the core language, with descriptions of commonly used "
+"modules and toolkits. It covers Python 3 and 2.6 versions."
+msgstr ""
+"Python Pocket Reference 由 Mark Lutz 编写,是一个了解核心语言的易于使用的参考,"
+"介绍了常用的模块和工具集。它涵盖了 Python 3 和 Python 2。"
+
+#: ../../intro/learning.rst:389
+msgid ""
+"`Python Pocket Reference "
+"`_"
+msgstr ""
+
+#: ../../intro/learning.rst:392
+msgid "Python Cookbook"
+msgstr ""
+
+#: ../../intro/learning.rst:394
+msgid ""
+"Python Cookbook, written by David Beazley and Brian K. Jones, is packed "
+"with practical recipes. This book covers the core Python language as well"
+" as tasks common to a wide variety of application domains."
+msgstr ""
+"Python Cookbook 由 David Beazley 和 Brian K. Jones 编写,打包了许多具有实践意义的“食谱”。"
+"这本书涵盖了核心 Python 语言,也涵盖了诸多不同应用的常见任务。"
+
+#: ../../intro/learning.rst:398
+msgid "`Python Cookbook `_"
+msgstr ""
+
+#: ../../intro/learning.rst:401
+msgid "Writing Idiomatic Python"
+msgstr ""
+
+#: ../../intro/learning.rst:403
+msgid ""
+"Writing Idiomatic Python, written by Jeff Knupp, contains the most common"
+" and important Python idioms in a format that maximizes identification "
+"and understanding. Each idiom is presented as a recommendation of a way "
+"to write some commonly used piece of code, followed by an explanation of "
+"why the idiom is important. It also contains two code samples for each "
+"idiom: the \"Harmful\" way to write it and the \"Idiomatic\" way."
+msgstr ""
+"Writing Idiomatic Python 由 Jeff Knupp 编写,包含了最常见和最重要的 Python 习语,"
+"其形式尽可能地有辨识度和易于理解。"
+"每个习语都是编写一些常用代码片段的推荐方式,其后会解释为什么这个习语是重要的。"
+"每个习语均有两个代码样例:\"有害的\" 方式和 \"理想的\" 方式。"
+
+#: ../../intro/learning.rst:410
+msgid ""
+"`For Python 2.7.3+ `_"
+msgstr ""
+
+#: ../../intro/learning.rst:412
+msgid ""
+"`For Python 3.3+ `_"
+msgstr ""
+
diff --git a/locales/zh_CN/LC_MESSAGES/intro/news.po b/locales/zh_CN/LC_MESSAGES/intro/news.po
new file mode 100644
index 000000000..87ece6020
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/intro/news.po
@@ -0,0 +1,173 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../intro/news.rst:5
+msgid "News"
+msgstr "新闻"
+
+#: ../../intro/news.rst:12
+msgid "PyCoder’s Weekly"
+msgstr ""
+
+#: ../../intro/news.rst:14
+msgid ""
+"PyCoder’s Weekly is a free weekly Python newsletter for Python developers"
+" by Python developers (Projects, Articles, News, and Jobs)."
+msgstr ""
+"PyCoder's Weekly 是一个面向 Python 开发者的免费的每周简讯,包括项目、文章、新闻和工作。"
+
+#: ../../intro/news.rst:17
+msgid "`PyCoder’s Weekly `_"
+msgstr ""
+
+#: ../../intro/news.rst:22
+msgid "Real Python"
+msgstr ""
+
+#: ../../intro/news.rst:24
+msgid ""
+"At Real Python you can learn all things Python from the ground up, with "
+"weekly free and in-depth tutorials. Everything from the absolute basics "
+"of Python, to web development and web scraping, to data visualization, "
+"and beyond."
+msgstr ""
+"在 Real Python 中,您可以通过每周免费且深入的教程从头开始学习 Python 的所有内容,"
+"包括 Python 最基础的知识,再到 Web 开发和 Web 爬取,再到数据可视化等等。"
+
+#: ../../intro/news.rst:26
+msgid "`Real Python `_"
+msgstr ""
+
+#: ../../intro/news.rst:31
+msgid "Planet Python"
+msgstr ""
+
+#: ../../intro/news.rst:33
+msgid "This is an aggregate of Python news from a growing number of developers."
+msgstr "这是一个聚合的,展示不断增长的开发者内容的 Python 新闻。"
+
+#: ../../intro/news.rst:35
+msgid "`Planet Python `_"
+msgstr ""
+
+#: ../../intro/news.rst:40
+msgid "/r/python"
+msgstr ""
+
+#: ../../intro/news.rst:42
+msgid ""
+"/r/python is the Reddit Python community where users contribute and vote "
+"on Python-related news."
+msgstr ""
+"/r/python 是 Reddit 的 Python 社区,在这里用户会贡献和投票出和 Python 相关的新闻。"
+
+#: ../../intro/news.rst:45
+msgid "`/r/python `_"
+msgstr ""
+
+#: ../../intro/news.rst:50
+msgid "Talk Python Podcast"
+msgstr ""
+
+#: ../../intro/news.rst:52
+msgid "The #1 Python-focused podcast covering the people and ideas in Python."
+msgstr "第一个关注 Python 的播客,涵盖了 Python 中的人和想法。"
+
+#: ../../intro/news.rst:54
+msgid "`Talk Python To Me `_"
+msgstr ""
+
+#: ../../intro/news.rst:59
+msgid "Python Bytes Podcast"
+msgstr ""
+
+#: ../../intro/news.rst:61
+msgid "A short-form Python podcast covering recent developer headlines."
+msgstr "一个简短的 Python 播客,涵盖了最近的开发人员头条。"
+
+#: ../../intro/news.rst:63
+msgid "`Python Bytes `_"
+msgstr ""
+
+#: ../../intro/news.rst:68
+msgid "Python Weekly"
+msgstr ""
+
+#: ../../intro/news.rst:70
+msgid ""
+"Python Weekly is a free weekly newsletter featuring curated news, "
+"articles, new releases, jobs, etc. related to Python."
+msgstr ""
+"Python Weekly 是一个免费的每周简讯,其特色包括与 Python 相关的新闻、文章、新的发行版本、工作等。"
+
+#: ../../intro/news.rst:73
+msgid "`Python Weekly `_"
+msgstr ""
+
+#: ../../intro/news.rst:78
+msgid "Python News"
+msgstr ""
+
+#: ../../intro/news.rst:80
+msgid ""
+"Python News is the news section in the official Python web site "
+"(www.python.org). It briefly highlights the news from the Python "
+"community."
+msgstr ""
+"Python News 是 Python 官方网站的新闻章节。它简短突出来自 Python 社区的新闻。"
+
+#: ../../intro/news.rst:83
+msgid "`Python News `_"
+msgstr ""
+
+#: ../../intro/news.rst:88
+msgid "Import Python Weekly"
+msgstr ""
+
+#: ../../intro/news.rst:90
+msgid ""
+"Weekly Python Newsletter containing Python Articles, Projects, Videos, "
+"and Tweets delivered in your inbox. Keep Your Python Programming Skills "
+"Updated."
+msgstr ""
+"Weekly Python Newsletter 包含有 Python 文章、项目、视频、Tweets,并发送到您的收件箱。"
+"能够保持您的 Python 编程技能持续更新。"
+
+#: ../../intro/news.rst:93
+msgid ""
+"`Import Python Weekly Newsletter "
+"`_"
+msgstr ""
+
+#: ../../intro/news.rst:98
+msgid "Awesome Python Newsletter"
+msgstr ""
+
+#: ../../intro/news.rst:100
+msgid "A weekly overview of the most popular Python news, articles, and packages."
+msgstr "每周最流行的 Python 新闻、文章和包的概述。"
+
+#: ../../intro/news.rst:102
+msgid "`Awesome Python Newsletter `_"
+msgstr ""
diff --git a/locales/zh_CN/LC_MESSAGES/notes/contribute.po b/locales/zh_CN/LC_MESSAGES/notes/contribute.po
new file mode 100644
index 000000000..c0c465a70
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/notes/contribute.po
@@ -0,0 +1,63 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../notes/contribute.rst:3
+msgid "Contribute"
+msgstr ""
+
+#: ../../notes/contribute.rst:7
+msgid "Python-guide is under active development, and contributors are welcome."
+msgstr ""
+
+#: ../../notes/contribute.rst:9
+msgid ""
+"If you have a feature request, suggestion, or bug report, please open a "
+"new issue on GitHub_. To submit patches, please send a pull request on "
+"GitHub_. Once your changes get merged back in, you'll automatically be "
+"added to the `Contributors List `_."
+msgstr ""
+
+#: ../../notes/contribute.rst:17
+msgid "Style Guide"
+msgstr ""
+
+#: ../../notes/contribute.rst:19
+msgid "For all contributions, please follow the :ref:`guide-style-guide`."
+msgstr ""
+
+#: ../../notes/contribute.rst:26
+msgid "Todo List"
+msgstr ""
+
+#: ../../notes/contribute.rst:28
+msgid ""
+"If you'd like to contribute, there's plenty to do. Here's a short todo_ "
+"list."
+msgstr ""
+
+#: ../../../TODO.rst:1
+msgid "Establish \"use this\" vs \"alternatives are....\" recommendations"
+msgstr ""
+
diff --git a/locales/zh_CN/LC_MESSAGES/notes/license.po b/locales/zh_CN/LC_MESSAGES/notes/license.po
new file mode 100644
index 000000000..5a1697470
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/notes/license.po
@@ -0,0 +1,35 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../notes/license.rst:3
+msgid "License"
+msgstr ""
+
+#: ../../notes/license.rst:7
+msgid ""
+"The Guide is licensed under the `Creative Commons Attribution-"
+"NonCommercial-ShareAlike 3.0 Unported license "
+"`_."
+msgstr ""
+
diff --git a/locales/zh_CN/LC_MESSAGES/notes/styleguide.po b/locales/zh_CN/LC_MESSAGES/notes/styleguide.po
new file mode 100644
index 000000000..3b84a44e1
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/notes/styleguide.po
@@ -0,0 +1,243 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../notes/styleguide.rst:5
+msgid "The Guide Style Guide"
+msgstr ""
+
+#: ../../notes/styleguide.rst:9
+msgid ""
+"As with all documentation, having a consistent format helps make the "
+"document more understandable. In order to make The Guide easier to "
+"digest, all contributions should fit within the rules of this style guide"
+" where appropriate."
+msgstr ""
+
+#: ../../notes/styleguide.rst:14
+msgid "The Guide is written as :ref:`restructuredtext-ref`."
+msgstr ""
+
+#: ../../notes/styleguide.rst:16
+msgid ""
+"Parts of The Guide may not yet match this style guide. Feel free to "
+"update those parts to be in sync with The Guide Style Guide"
+msgstr ""
+
+#: ../../notes/styleguide.rst:19
+msgid ""
+"On any page of the rendered HTML you can click \"Show Source\" to see how"
+" authors have styled the page."
+msgstr ""
+
+#: ../../notes/styleguide.rst:25
+msgid "Relevancy"
+msgstr ""
+
+#: ../../notes/styleguide.rst:27
+msgid ""
+"Strive to keep any contributions relevant to the :ref:`purpose of The "
+"Guide `."
+msgstr ""
+
+#: ../../notes/styleguide.rst:30
+msgid ""
+"Avoid including too much information on subjects that don't directly "
+"relate to Python development."
+msgstr ""
+
+#: ../../notes/styleguide.rst:32
+msgid ""
+"Prefer to link to other sources if the information is already out there. "
+"Be sure to describe what and why you are linking."
+msgstr ""
+
+#: ../../notes/styleguide.rst:34
+msgid ""
+"`Cite `_ "
+"references where needed."
+msgstr ""
+
+#: ../../notes/styleguide.rst:36
+msgid ""
+"If a subject isn't directly relevant to Python, but useful in conjunction"
+" with Python (e.g., Git, GitHub, Databases), reference by linking to "
+"useful resources, and describe why it's useful to Python."
+msgstr ""
+
+#: ../../notes/styleguide.rst:39
+msgid "When in doubt, ask."
+msgstr ""
+
+#: ../../notes/styleguide.rst:44
+msgid "Headings"
+msgstr ""
+
+#: ../../notes/styleguide.rst:46
+msgid "Use the following styles for headings."
+msgstr ""
+
+#: ../../notes/styleguide.rst:48
+msgid "Chapter title:"
+msgstr ""
+
+#: ../../notes/styleguide.rst:56
+msgid "Page title:"
+msgstr ""
+
+#: ../../notes/styleguide.rst:64
+msgid "Section headings:"
+msgstr ""
+
+#: ../../notes/styleguide.rst:71
+msgid "Sub section headings:"
+msgstr ""
+
+#: ../../notes/styleguide.rst:81
+msgid "Prose"
+msgstr ""
+
+#: ../../notes/styleguide.rst:83
+msgid ""
+"Wrap text lines at 78 characters. Where necessary, lines may exceed 78 "
+"characters, especially if wrapping would make the source text more "
+"difficult to read."
+msgstr ""
+
+#: ../../notes/styleguide.rst:87
+msgid "Use Standard American English, not British English."
+msgstr ""
+
+#: ../../notes/styleguide.rst:89
+msgid ""
+"Use of the `serial comma `_ "
+"(also known as the Oxford comma) is 100% non-optional. Any attempt to "
+"submit content with a missing serial comma will result in permanent "
+"banishment from this project, due to complete and total lack of taste."
+msgstr ""
+
+#: ../../notes/styleguide.rst:94
+msgid "Banishment? Is this a joke? Hopefully we will never have to find out."
+msgstr ""
+
+#: ../../notes/styleguide.rst:99
+msgid "Code Examples"
+msgstr ""
+
+#: ../../notes/styleguide.rst:101
+msgid "Wrap all code examples at 70 characters to avoid horizontal scrollbars."
+msgstr ""
+
+#: ../../notes/styleguide.rst:103
+msgid "Command line examples:"
+msgstr ""
+
+#: ../../notes/styleguide.rst:112
+msgid ""
+"Be sure to include the ``$`` prefix before each line for Unix console "
+"examples."
+msgstr ""
+
+#: ../../notes/styleguide.rst:114
+msgid ""
+"For Windows console examples, use ``doscon`` or ``powershell`` instead of"
+" ``console``, and omit the ``$`` prefix."
+msgstr ""
+
+#: ../../notes/styleguide.rst:117
+msgid "Python interpreter examples:"
+msgstr ""
+
+#: ../../notes/styleguide.rst:127
+msgid "Python examples:"
+msgstr ""
+
+#: ../../notes/styleguide.rst:141
+msgid "Externally Linking"
+msgstr ""
+
+#: ../../notes/styleguide.rst:143
+msgid "Prefer labels for well known subjects (e.g. proper nouns) when linking:"
+msgstr ""
+
+#: ../../notes/styleguide.rst:151
+msgid ""
+"Prefer to use descriptive labels with inline links instead of leaving "
+"bare links:"
+msgstr ""
+
+#: ../../notes/styleguide.rst:158
+msgid ""
+"Avoid using labels such as \"click here\", \"this\", etc., preferring "
+"descriptive labels (SEO worthy) instead."
+msgstr ""
+
+#: ../../notes/styleguide.rst:164
+msgid "Linking to Sections in The Guide"
+msgstr ""
+
+#: ../../notes/styleguide.rst:166
+msgid ""
+"To cross-reference other parts of this documentation, use the `:ref: "
+"`_ keyword and labels."
+msgstr ""
+
+#: ../../notes/styleguide.rst:170
+msgid ""
+"To make reference labels more clear and unique, always add a ``-ref`` "
+"suffix:"
+msgstr ""
+
+#: ../../notes/styleguide.rst:182
+msgid "Notes and Warnings"
+msgstr ""
+
+#: ../../notes/styleguide.rst:184
+msgid ""
+"Make use of the appropriate `admonitions directives `_ when "
+"making notes."
+msgstr ""
+
+#: ../../notes/styleguide.rst:187
+msgid "Notes:"
+msgstr ""
+
+#: ../../notes/styleguide.rst:196
+msgid "Warnings:"
+msgstr ""
+
+#: ../../notes/styleguide.rst:205
+msgid "TODOs"
+msgstr ""
+
+#: ../../notes/styleguide.rst:207
+msgid ""
+"Please mark any incomplete areas of The Guide with a `todo directive "
+"`_. To "
+"avoid cluttering the :ref:`todo-list-ref`, use a single ``todo`` for stub"
+" documents or large incomplete sections."
+msgstr ""
+
diff --git a/locales/zh_CN/LC_MESSAGES/scenarios/admin.po b/locales/zh_CN/LC_MESSAGES/scenarios/admin.po
new file mode 100644
index 000000000..868cb5ac8
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/scenarios/admin.po
@@ -0,0 +1,388 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../scenarios/admin.rst:4
+msgid "Systems Administration"
+msgstr ""
+
+#: ../../scenarios/admin.rst:11
+msgid "Fabric"
+msgstr ""
+
+#: ../../scenarios/admin.rst:13
+msgid ""
+"`Fabric `_ is a library for simplifying system "
+"administration tasks. While Chef and Puppet tend to focus on managing "
+"servers and system libraries, Fabric is more focused on application level"
+" tasks such as deployment."
+msgstr ""
+
+#: ../../scenarios/admin.rst:18
+msgid "Install Fabric:"
+msgstr ""
+
+#: ../../scenarios/admin.rst:24
+msgid ""
+"The following code will create two tasks that we can use: "
+"``memory_usage`` and ``deploy``. The former will output the memory usage "
+"on each machine. The latter will SSH into each server, cd to our project "
+"directory, activate the virtual environment, pull the newest codebase, "
+"and restart the application server."
+msgstr ""
+
+#: ../../scenarios/admin.rst:47
+msgid ""
+"With the previous code saved in a file named :file:`fabfile.py`, we can "
+"check memory usage with:"
+msgstr ""
+
+#: ../../scenarios/admin.rst:67
+msgid "and we can deploy with:"
+msgstr ""
+
+#: ../../scenarios/admin.rst:73
+msgid ""
+"Additional features include parallel execution, interaction with remote "
+"programs, and host grouping."
+msgstr ""
+
+#: ../../scenarios/admin.rst:76
+msgid "`Fabric Documentation `_"
+msgstr ""
+
+#: ../../scenarios/admin.rst:81
+msgid "Salt"
+msgstr ""
+
+#: ../../scenarios/admin.rst:83
+msgid ""
+"`Salt `_ is an open source infrastructure "
+"management tool. It supports remote command execution from a central "
+"point (master host) to multiple hosts (minions). It also supports system "
+"states which can be used to configure multiple servers using simple "
+"template files."
+msgstr ""
+
+#: ../../scenarios/admin.rst:88
+msgid "Salt supports Python versions 2.6 and 2.7 and can be installed via pip:"
+msgstr ""
+
+#: ../../scenarios/admin.rst:94
+msgid ""
+"After configuring a master server and any number of minion hosts, we can "
+"run arbitrary shell commands or use pre-built modules of complex commands"
+" on our minions."
+msgstr ""
+
+#: ../../scenarios/admin.rst:98
+msgid ""
+"The following command lists all available minion hosts, using the ping "
+"module."
+msgstr ""
+
+#: ../../scenarios/admin.rst:104
+msgid ""
+"The host filtering is accomplished by matching the minion id or using the"
+" grains system. The `grains "
+"`_ "
+"system uses static host information like the operating system version or "
+"the CPU architecture to provide a host taxonomy for the Salt modules."
+msgstr ""
+
+#: ../../scenarios/admin.rst:110
+msgid ""
+"The following command lists all available minions running CentOS using "
+"the grains system:"
+msgstr ""
+
+#: ../../scenarios/admin.rst:117
+msgid ""
+"Salt also provides a state system. States can be used to configure the "
+"minion hosts."
+msgstr ""
+
+#: ../../scenarios/admin.rst:120
+msgid ""
+"For example, when a minion host is ordered to read the following state "
+"file, it will install and start the Apache server:"
+msgstr ""
+
+#: ../../scenarios/admin.rst:134
+msgid ""
+"State files can be written using YAML, the Jinja2 template system, or "
+"pure Python."
+msgstr ""
+
+#: ../../scenarios/admin.rst:136
+msgid "`Salt Documentation `_"
+msgstr ""
+
+#: ../../scenarios/admin.rst:141
+msgid "Psutil"
+msgstr ""
+
+#: ../../scenarios/admin.rst:143
+msgid ""
+"`Psutil `_ is an interface to "
+"different system information (e.g. CPU, memory, disks, network, users, "
+"and processes)."
+msgstr ""
+
+#: ../../scenarios/admin.rst:146
+msgid ""
+"Here is an example to be aware of some server overload. If any of the "
+"tests (net, CPU) fail, it will send an email."
+msgstr ""
+
+#: ../../scenarios/admin.rst:192
+msgid ""
+"A full terminal application like a widely extended top which is based on "
+"psutil and with the ability of a client-server monitoring is `glance "
+"`_."
+msgstr ""
+
+#: ../../scenarios/admin.rst:199
+msgid "Ansible"
+msgstr ""
+
+#: ../../scenarios/admin.rst:201
+msgid ""
+"`Ansible `_ is an open source system automation "
+"tool. Its biggest advantage over Puppet or Chef is that it does not "
+"require an agent on the client machine. Playbooks are Ansible’s "
+"configuration, deployment, and orchestration language and are written in "
+"YAML with Jinja2 for templating."
+msgstr ""
+
+#: ../../scenarios/admin.rst:206
+msgid "Ansible supports Python versions 2.6 and 2.7 and can be installed via pip:"
+msgstr ""
+
+#: ../../scenarios/admin.rst:212
+msgid ""
+"Ansible requires an inventory file that describes the hosts to which it "
+"has access. Below is an example of a host and playbook that will ping all"
+" the hosts in the inventory file."
+msgstr ""
+
+#: ../../scenarios/admin.rst:216
+msgid "Here is an example inventory file: :file:`hosts.yml`"
+msgstr ""
+
+#: ../../scenarios/admin.rst:224
+msgid "Here is an example playbook: :file:`ping.yml`"
+msgstr ""
+
+#: ../../scenarios/admin.rst:236
+msgid "To run the playbook:"
+msgstr ""
+
+#: ../../scenarios/admin.rst:242
+msgid ""
+"The Ansible playbook will ping all of the servers in the "
+":file:`hosts.yml` file. You can also select groups of servers using "
+"Ansible. For more information about Ansible, read the `Ansible Docs "
+"`_."
+msgstr ""
+
+#: ../../scenarios/admin.rst:246
+msgid ""
+"`An Ansible tutorial `_ is also a great and detailed introduction to getting started"
+" with Ansible."
+msgstr ""
+
+#: ../../scenarios/admin.rst:252
+msgid "Chef"
+msgstr ""
+
+#: ../../scenarios/admin.rst:254
+msgid ""
+"`Chef `_ is a systems and cloud "
+"infrastructure automation framework that makes it easy to deploy servers "
+"and applications to any physical, virtual, or cloud location. In case "
+"this is your choice for configuration management, you will primarily use "
+"Ruby to write your infrastructure code."
+msgstr ""
+
+#: ../../scenarios/admin.rst:259
+msgid ""
+"Chef clients run on every server that is part of your infrastructure and "
+"these regularly check with your Chef server to ensure your system is "
+"always aligned and represents the desired state. Since each individual "
+"server has its own distinct Chef client, each server configures itself "
+"and this distributed approach makes Chef a scalable automation platform."
+msgstr ""
+
+#: ../../scenarios/admin.rst:264
+msgid ""
+"Chef works by using custom recipes (configuration elements), implemented "
+"in cookbooks. Cookbooks, which are basically packages for infrastructure "
+"choices, are usually stored in your Chef server. Read the `DigitalOcean "
+"tutorial series `_ "
+"on Chef to learn how to create a simple Chef Server."
+msgstr ""
+
+#: ../../scenarios/admin.rst:270
+msgid ""
+"To create a simple cookbook the `knife "
+"`_ command is used:"
+msgstr ""
+
+#: ../../scenarios/admin.rst:276
+msgid ""
+"`Getting started with Chef `_ is a good starting point for Chef Beginners and "
+"many community maintained cookbooks that can serve as a good reference or"
+" tweaked to serve your infrastructure configuration needs can be found on"
+" the `Chef Supermarket `_."
+msgstr ""
+
+#: ../../scenarios/admin.rst:281
+msgid "`Chef Documentation `_"
+msgstr ""
+
+#: ../../scenarios/admin.rst:286
+msgid "Puppet"
+msgstr ""
+
+#: ../../scenarios/admin.rst:288
+msgid ""
+"`Puppet `_ is IT Automation and configuration "
+"management software from Puppet Labs that allows System Administrators to"
+" define the state of their IT Infrastructure, thereby providing an "
+"elegant way to manage their fleet of physical and virtual machines."
+msgstr ""
+
+#: ../../scenarios/admin.rst:293
+msgid ""
+"Puppet is available both as an Open Source and an Enterprise variant. "
+"Modules are small, shareable units of code written to automate or define "
+"the state of a system. `Puppet Forge `_ "
+"is a repository for modules written by the community for Open Source and "
+"Enterprise Puppet."
+msgstr ""
+
+#: ../../scenarios/admin.rst:298
+msgid ""
+"Puppet Agents are installed on nodes whose state needs to be monitored or"
+" changed. A designated server known as the Puppet Master is responsible "
+"for orchestrating the agent nodes."
+msgstr ""
+
+#: ../../scenarios/admin.rst:302
+msgid ""
+"Agent nodes send basic facts about the system such as the operating "
+"system, kernel, architecture, IP address, hostname, etc. to the Puppet "
+"Master. The Puppet Master then compiles a catalog with information "
+"provided by the agents on how each node should be configured and sends it"
+" to the agent. The agent enforces the change as prescribed in the catalog"
+" and sends a report back to the Puppet Master."
+msgstr ""
+
+#: ../../scenarios/admin.rst:309
+msgid ""
+"Facter is an interesting tool that ships with Puppet that pulls basic "
+"facts about the system. These facts can be referenced as a variable while"
+" writing your Puppet modules."
+msgstr ""
+
+#: ../../scenarios/admin.rst:322
+msgid ""
+"Writing Modules in Puppet is pretty straight forward. Puppet Manifests "
+"together form Puppet Modules. Puppet manifests end with an extension of "
+"``.pp``. Here is an example of 'Hello World' in Puppet."
+msgstr ""
+
+#: ../../scenarios/admin.rst:334
+msgid ""
+"Here is another example with system based logic. Note how the operating "
+"system fact is being used as a variable prepended with the ``$`` sign. "
+"Similarly, this holds true for other facts such as hostname which can be "
+"referenced by ``$hostname``."
+msgstr ""
+
+#: ../../scenarios/admin.rst:348
+msgid ""
+"There are several resource types for Puppet but the package-file-service "
+"paradigm is all you need for undertaking the majority of the "
+"configuration management. The following Puppet code makes sure that the "
+"OpenSSH-Server package is installed in a system and the sshd service is "
+"notified to restart every time the sshd configuration file is changed."
+msgstr ""
+
+#: ../../scenarios/admin.rst:379
+msgid ""
+"For more information, refer to the `Puppet Labs Documentation "
+"`_"
+msgstr ""
+
+#: ../../scenarios/admin.rst:384
+msgid "Blueprint"
+msgstr ""
+
+#: ../../scenarios/admin.rst:386
+msgid "待处理"
+msgstr ""
+
+#: ../../scenarios/admin.rst:386
+msgid "Write about Blueprint"
+msgstr ""
+
+#: ../../scenarios/admin.rst:391
+msgid "Buildout"
+msgstr ""
+
+#: ../../scenarios/admin.rst:393
+msgid ""
+"`Buildout `_ is an open source software build "
+"tool. Buildout is created using the Python programming language. It "
+"implements a principle of separation of configuration from the scripts "
+"that do the setting up. Buildout is primarily used to download and set up"
+" dependencies in `Python eggs "
+"`_ "
+"format of the software being developed or deployed. Recipes for build "
+"tasks in any environment can be created, and many are already available."
+msgstr ""
+
+#: ../../scenarios/admin.rst:404
+msgid "Shinken"
+msgstr ""
+
+#: ../../scenarios/admin.rst:406
+msgid ""
+"`Shinken `_ is a modern, Nagios "
+"compatible monitoring framework written in Python. Its main goal is to "
+"give users a flexible architecture for their monitoring system that is "
+"designed to scale to large environments."
+msgstr ""
+
+#: ../../scenarios/admin.rst:411
+msgid ""
+"Shinken is backwards-compatible with the Nagios configuration standard "
+"and plugins. It works on any operating system and architecture that "
+"supports Python, which includes Windows, Linux, and FreeBSD."
+msgstr ""
+
diff --git a/locales/zh_CN/LC_MESSAGES/scenarios/ci.po b/locales/zh_CN/LC_MESSAGES/scenarios/ci.po
new file mode 100644
index 000000000..df799e7fa
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/scenarios/ci.po
@@ -0,0 +1,143 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../scenarios/ci.rst:4
+msgid "Continuous Integration"
+msgstr ""
+
+#: ../../scenarios/ci.rst:9
+msgid "For advice on writing your tests, see :doc:`/writing/tests`."
+msgstr ""
+
+#: ../../scenarios/ci.rst:14
+msgid "Why?"
+msgstr ""
+
+#: ../../scenarios/ci.rst:16
+msgid ""
+"Martin Fowler, who first wrote about `Continuous Integration "
+"`_ (short: "
+"CI) together with Kent Beck, describes CI as follows:"
+msgstr ""
+
+#: ../../scenarios/ci.rst:19
+msgid ""
+"Continuous Integration is a software development practice where members "
+"of a team integrate their work frequently, usually each person integrates"
+" at least daily - leading to multiple integrations per day. Each "
+"integration is verified by an automated build (including test) to detect "
+"integration errors as quickly as possible. Many teams find that this "
+"approach leads to significantly reduced integration problems and allows a"
+" team to develop cohesive software more rapidly."
+msgstr ""
+
+#: ../../scenarios/ci.rst:30
+msgid "Jenkins"
+msgstr ""
+
+#: ../../scenarios/ci.rst:32
+msgid ""
+"`Jenkins CI `_ is an extensible Continuous "
+"Integration engine. Use it."
+msgstr ""
+
+#: ../../scenarios/ci.rst:37
+msgid "Buildbot"
+msgstr ""
+
+#: ../../scenarios/ci.rst:39
+msgid ""
+"`Buildbot `_ is a Python system to "
+"automate the compile/test cycle to validate code changes."
+msgstr ""
+
+#: ../../scenarios/ci.rst:45
+msgid "Tox"
+msgstr ""
+
+#: ../../scenarios/ci.rst:47
+msgid ""
+"`tox `_ is an automation tool "
+"providing packaging, testing, and deployment of Python software right "
+"from the console or CI server. It is a generic virtualenv management and "
+"test command line tool which provides the following features:"
+msgstr ""
+
+#: ../../scenarios/ci.rst:52
+msgid ""
+"Checking that packages install correctly with different Python versions "
+"and interpreters"
+msgstr ""
+
+#: ../../scenarios/ci.rst:54
+msgid ""
+"Running tests in each of the environments, configuring your test tool of "
+"choice"
+msgstr ""
+
+#: ../../scenarios/ci.rst:56
+msgid ""
+"Acting as a front-end to Continuous Integration servers, reducing "
+"boilerplate and merging CI and shell-based testing"
+msgstr ""
+
+#: ../../scenarios/ci.rst:62
+msgid "Travis-CI"
+msgstr ""
+
+#: ../../scenarios/ci.rst:64
+msgid ""
+"`Travis-CI `_ is a distributed CI server which "
+"builds tests for open source projects for free. It provides multiple "
+"workers to run Python tests on and seamlessly integrates with GitHub. You"
+" can even have it comment on your Pull Requests whether this particular "
+"changeset breaks the build or not. So, if you are hosting your code on "
+"GitHub, Travis-CI is a great and easy way to get started with Continuous "
+"Integration."
+msgstr ""
+
+#: ../../scenarios/ci.rst:71
+msgid ""
+"In order to get started, add a :file:`.travis.yml` file to your "
+"repository with this example content::"
+msgstr ""
+
+#: ../../scenarios/ci.rst:87
+msgid ""
+"This will get your project tested on all the listed Python versions by "
+"running the given script, and will only build the ``master`` branch. "
+"There are a lot more options you can enable, like notifications, before "
+"and after steps, and much more. The `Travis-CI docs `_ explain all of these options, and are "
+"very thorough."
+msgstr ""
+
+#: ../../scenarios/ci.rst:93
+msgid ""
+"In order to activate testing for your project, go to `the Travis-CI site "
+"`_ and login with your GitHub account. Then "
+"activate your project in your profile settings and you're ready to go. "
+"From now on, your project's tests will be run on every push to GitHub."
+msgstr ""
+
diff --git a/locales/zh_CN/LC_MESSAGES/scenarios/cli.po b/locales/zh_CN/LC_MESSAGES/scenarios/cli.po
new file mode 100644
index 000000000..7e233d237
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/scenarios/cli.po
@@ -0,0 +1,150 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../scenarios/cli.rst:4
+msgid "Command-line Applications"
+msgstr ""
+
+#: ../../scenarios/cli.rst:8
+msgid ""
+"Command-line applications, also referred to as `Console Applications "
+"`_, are computer "
+"programs designed to be used from a text interface, such as a `shell "
+"`_. Command-line "
+"applications usually accept various inputs as arguments, often referred "
+"to as parameters or sub-commands, as well as options, often referred to "
+"as flags or switches."
+msgstr ""
+
+#: ../../scenarios/cli.rst:15
+msgid "Some popular command-line applications include:"
+msgstr ""
+
+#: ../../scenarios/cli.rst:17
+msgid ""
+"`grep `_ - A plain-text data search "
+"utility"
+msgstr ""
+
+#: ../../scenarios/cli.rst:18
+msgid "`curl `_ - A tool for data transfer with URL syntax"
+msgstr ""
+
+#: ../../scenarios/cli.rst:19
+msgid ""
+"`httpie `_ - A command-line HTTP"
+" client, a user-friendly cURL replacement"
+msgstr ""
+
+#: ../../scenarios/cli.rst:21
+msgid "`Git `_ - A distributed version control system"
+msgstr ""
+
+#: ../../scenarios/cli.rst:22
+msgid ""
+"`Mercurial `_ - A distributed version "
+"control system primarily written in Python"
+msgstr ""
+
+#: ../../scenarios/cli.rst:28
+msgid "Click"
+msgstr ""
+
+#: ../../scenarios/cli.rst:30
+msgid ""
+"`click `_ is a Python package for "
+"creating command-line interfaces in a composable way with as little code "
+"as possible. This “Command-Line Interface Creation Kit” is highly "
+"configurable but comes with good defaults out of the box."
+msgstr ""
+
+#: ../../scenarios/cli.rst:38
+msgid "docopt"
+msgstr ""
+
+#: ../../scenarios/cli.rst:40
+msgid ""
+"`docopt `_ is a lightweight, highly Pythonic package "
+"that allows creating command-line interfaces easily and intuitively, by "
+"parsing POSIX-style usage instructions."
+msgstr ""
+
+#: ../../scenarios/cli.rst:47
+msgid "Plac"
+msgstr ""
+
+#: ../../scenarios/cli.rst:49
+msgid ""
+"`Plac `_ is a simple wrapper over the "
+"Python standard library `argparse "
+"`_, which hides most of "
+"its complexity by using a declarative interface: the argument parser is "
+"inferred rather than written down imperatively. This module targets "
+"unsophisticated users, programmers, sysadmins, scientists, and in general"
+" people writing throw-away scripts for themselves, who choose to create a"
+" command-line interface because it is quick and simple."
+msgstr ""
+
+#: ../../scenarios/cli.rst:60
+msgid "Cliff"
+msgstr ""
+
+#: ../../scenarios/cli.rst:62
+msgid ""
+"`Cliff `_ is a framework for"
+" building command-line programs. It uses setuptools entry points to "
+"provide subcommands, output formatters, and other extensions. The "
+"framework is meant to be used to create multi-level commands such as "
+"``svn`` and ``git``, where the main program handles some basic argument "
+"parsing and then invokes a sub-command to do the work."
+msgstr ""
+
+#: ../../scenarios/cli.rst:72
+msgid "Cement"
+msgstr ""
+
+#: ../../scenarios/cli.rst:74
+msgid ""
+"`Cement `_ is an advanced CLI Application "
+"Framework. Its goal is to introduce a standard and feature-full platform "
+"for both simple and complex command line applications as well as support "
+"rapid development needs without sacrificing quality. Cement is flexible, "
+"and its use cases span from the simplicity of a micro-framework to the "
+"complexity of a mega-framework."
+msgstr ""
+
+#: ../../scenarios/cli.rst:84
+msgid "Python Fire"
+msgstr ""
+
+#: ../../scenarios/cli.rst:86
+msgid ""
+"`Python Fire `_ is a library for "
+"automatically generating command-line interfaces from absolutely any "
+"Python object. It can help debug Python code more easily from the command"
+" line, create CLI interfaces to existing code, allow you to interactively"
+" explore code in a REPL, and simplify transitioning between Python and "
+"Bash (or any other shell)."
+msgstr ""
+
diff --git a/locales/zh_CN/LC_MESSAGES/scenarios/clibs.po b/locales/zh_CN/LC_MESSAGES/scenarios/clibs.po
new file mode 100644
index 000000000..4e1e5a62d
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/scenarios/clibs.po
@@ -0,0 +1,130 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../scenarios/clibs.rst:4
+msgid "Interfacing with C/C++ Libraries"
+msgstr ""
+
+#: ../../scenarios/clibs.rst:11
+msgid "C Foreign Function Interface"
+msgstr ""
+
+#: ../../scenarios/clibs.rst:13
+msgid ""
+"`CFFI `_ provides a simple to use"
+" mechanism for interfacing with C from both CPython and PyPy. It supports"
+" two modes: an inline `ABI `_ compatibility mode "
+"(example provided below), which allows you to dynamically load and run "
+"functions from executable modules (essentially exposing the same "
+"functionality as `LoadLibrary `_ or "
+"`dlopen `_), and an API"
+" mode, which allows you to build C extension modules."
+msgstr ""
+
+#: ../../scenarios/clibs.rst:21
+msgid "ABI Interaction"
+msgstr ""
+
+#: ../../scenarios/clibs.rst:37
+msgid "ctypes"
+msgstr ""
+
+#: ../../scenarios/clibs.rst:39
+msgid ""
+"`ctypes `_ is the de facto"
+" standard library for interfacing with C/C++ from CPython, and it "
+"provides not only full access to the native C interface of most major "
+"operating systems (e.g., kernel32 on Windows, or libc on \\*nix), but "
+"also provides support for loading and interfacing with dynamic libraries,"
+" such as DLLs or shared objects, at runtime. It brings along with it a "
+"whole host of types for interacting with system APIs, and allows you to "
+"rather easily define your own complex types, such as structs and unions, "
+"and allows you to modify things such as padding and alignment, if needed."
+" It can be a bit crufty to use, but in conjunction with the `struct "
+"`_ module, you are "
+"essentially provided full control over how your data types get translated"
+" into something usable by a pure C/C++ method."
+msgstr ""
+
+#: ../../scenarios/clibs.rst:53
+msgid "Struct Equivalents"
+msgstr ""
+
+#: ../../scenarios/clibs.rst:55
+msgid ":file:`MyStruct.h`"
+msgstr ""
+
+#: ../../scenarios/clibs.rst:65
+msgid ":file:`MyStruct.py`"
+msgstr ""
+
+#: ../../scenarios/clibs.rst:78
+msgid "SWIG"
+msgstr ""
+
+#: ../../scenarios/clibs.rst:80
+msgid ""
+"`SWIG `_, though not strictly Python focused (it "
+"supports a large number of scripting languages), is a tool for generating"
+" bindings for interpreted languages from C/C++ header files. It is "
+"extremely simple to use: the consumer simply needs to define an interface"
+" file (detailed in the tutorial and documentations), include the "
+"requisite C/C++ headers, and run the build tool against them. While it "
+"does have some limits (it currently seems to have issues with a small "
+"subset of newer C++ features, and getting template-heavy code to work can"
+" be a bit verbose), it provides a great deal of power and exposes lots of"
+" features to Python with little effort. Additionally, you can easily "
+"extend the bindings SWIG creates (in the interface file) to overload "
+"operators and built-in methods, effectively re- cast C++ exceptions to be"
+" catchable by Python, etc."
+msgstr ""
+
+#: ../../scenarios/clibs.rst:94
+msgid "Example: Overloading __repr__"
+msgstr ""
+
+#: ../../scenarios/clibs.rst:96
+msgid ":file:`MyClass.h`"
+msgstr ""
+
+#: ../../scenarios/clibs.rst:110
+msgid ":file:`myclass.i`"
+msgstr ""
+
+#: ../../scenarios/clibs.rst:135
+msgid "Boost.Python"
+msgstr ""
+
+#: ../../scenarios/clibs.rst:137
+msgid ""
+"`Boost.Python `_ "
+"requires a bit more manual work to expose C++ object functionality, but "
+"it is capable of providing all the same features SWIG does and then some,"
+" to include providing wrappers to access PyObjects in C++, extracting "
+"SWIG wrapper objects, and even embedding bits of Python into your C++ "
+"code."
+msgstr ""
+
diff --git a/locales/zh_CN/LC_MESSAGES/scenarios/client.po b/locales/zh_CN/LC_MESSAGES/scenarios/client.po
new file mode 100644
index 000000000..313f5aa65
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/scenarios/client.po
@@ -0,0 +1,111 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../scenarios/client.rst:4
+msgid "Network Applications"
+msgstr ""
+
+#: ../../scenarios/client.rst:11
+msgid "HTTP"
+msgstr ""
+
+#: ../../scenarios/client.rst:13
+msgid ""
+"The Hypertext Transfer Protocol (HTTP) is an application protocol for "
+"distributed, collaborative, hypermedia information systems. HTTP is the "
+"foundation of data communication for the World Wide Web."
+msgstr ""
+
+#: ../../scenarios/client.rst:18
+msgid "Requests"
+msgstr ""
+
+#: ../../scenarios/client.rst:20
+msgid ""
+"Python’s standard urllib2 module provides most of the HTTP capabilities "
+"you need, but the API is thoroughly broken. It was built for a different "
+"time — and a different web. It requires an enormous amount of work (even "
+"method overrides) to perform the simplest of tasks."
+msgstr ""
+
+#: ../../scenarios/client.rst:25
+msgid ""
+"Requests takes all of the work out of Python HTTP — making your "
+"integration with web services seamless. There’s no need to manually add "
+"query strings to your URLs, or to form-encode your POST data. Keep-alive "
+"and HTTP connection pooling are 100% automatic, powered by urllib3, which"
+" is embedded within Requests."
+msgstr ""
+
+#: ../../scenarios/client.rst:31
+msgid "`Documentation `_"
+msgstr ""
+
+#: ../../scenarios/client.rst:32
+msgid "`PyPi `_"
+msgstr ""
+
+#: ../../scenarios/client.rst:33
+msgid "`GitHub `_"
+msgstr ""
+
+#: ../../scenarios/client.rst:38
+msgid "Distributed Systems"
+msgstr ""
+
+#: ../../scenarios/client.rst:42
+msgid "ZeroMQ"
+msgstr ""
+
+#: ../../scenarios/client.rst:44
+msgid ""
+"ØMQ (also spelled ZeroMQ, 0MQ or ZMQ) is a high-performance asynchronous "
+"messaging library aimed at use in scalable distributed or concurrent "
+"applications. It provides a message queue, but unlike message-oriented "
+"middleware, a ØMQ system can run without a dedicated message broker. The "
+"library is designed to have a familiar socket-style API."
+msgstr ""
+
+#: ../../scenarios/client.rst:51
+msgid "RabbitMQ"
+msgstr ""
+
+#: ../../scenarios/client.rst:53
+msgid ""
+"RabbitMQ is an open source message broker software that implements the "
+"Advanced Message Queuing Protocol (AMQP). The RabbitMQ server is written"
+" in the Erlang programming language and is built on the Open Telecom "
+"Platform framework for clustering and failover. Client libraries to "
+"interface with the broker are available for all major programming "
+"languages."
+msgstr ""
+
+#: ../../scenarios/client.rst:59
+msgid "`Homepage `_"
+msgstr ""
+
+#: ../../scenarios/client.rst:60
+msgid "`GitHub Organization `_"
+msgstr ""
+
diff --git a/locales/zh_CN/LC_MESSAGES/scenarios/crypto.po b/locales/zh_CN/LC_MESSAGES/scenarios/crypto.po
new file mode 100644
index 000000000..bacccadfa
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/scenarios/crypto.po
@@ -0,0 +1,100 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../scenarios/crypto.rst:4
+msgid "Cryptography"
+msgstr ""
+
+#: ../../scenarios/crypto.rst:11
+msgid "cryptography"
+msgstr ""
+
+#: ../../scenarios/crypto.rst:13
+msgid ""
+"`cryptography `_ is an actively "
+"developed library that provides cryptographic recipes and primitives. It "
+"supports Python 2.6-2.7, Python 3.3+, and PyPy."
+msgstr ""
+
+#: ../../scenarios/crypto.rst:18
+msgid ""
+"cryptography is divided into two layers of recipes and hazardous "
+"materials (hazmat). The recipes layer provides a simple API for proper "
+"symmetric encryption and the hazmat layer provides low-level "
+"cryptographic primitives."
+msgstr ""
+
+#: ../../scenarios/crypto.rst:25 ../../scenarios/crypto.rst:57
+msgid "Installation"
+msgstr ""
+
+#: ../../scenarios/crypto.rst:32 ../../scenarios/crypto.rst:62
+msgid "Example"
+msgstr ""
+
+#: ../../scenarios/crypto.rst:34
+msgid "Example code using high level symmetric encryption recipe:"
+msgstr ""
+
+#: ../../scenarios/crypto.rst:47
+msgid "GPGME bindings"
+msgstr ""
+
+#: ../../scenarios/crypto.rst:49
+msgid ""
+"The `GPGME Python bindings "
+"`_ provide"
+" Pythonic access to `GPG Made Easy "
+"`_, a C API for the "
+"entire GNU Privacy Guard suite of projects, including GPG, libgcrypt, and"
+" gpgsm (the S/MIME engine). It supports Python 2.6, 2.7, 3.4, and above. "
+"Depends on the SWIG C interface for Python as well as the GnuPG software "
+"and libraries."
+msgstr ""
+
+#: ../../scenarios/crypto.rst:52
+msgid ""
+"A more comprehensive `GPGME Python Bindings HOWTO "
+"`_"
+" is available with the source, and an HTML version is available `at "
+"http://files.au.adversary.org "
+"`_. Python"
+" 3 sample scripts from the examples in the HOWTO are also provided with "
+"the source and are accessible `at gnupg.org "
+"`_."
+msgstr ""
+
+#: ../../scenarios/crypto.rst:54
+msgid ""
+"Available under the same terms as the rest of the GnuPG Project: GPLv2 "
+"and LGPLv2.1, both with the \"or any later version\" clause."
+msgstr ""
+
+#: ../../scenarios/crypto.rst:59
+msgid ""
+"Included by default when compiling GPGME if the configure script locates "
+"a supported python version (which it will if it's in $PATH during "
+"configuration)."
+msgstr ""
+
diff --git a/locales/zh_CN/LC_MESSAGES/scenarios/db.po b/locales/zh_CN/LC_MESSAGES/scenarios/db.po
new file mode 100644
index 000000000..a137d8eb7
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/scenarios/db.po
@@ -0,0 +1,170 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../scenarios/db.rst:4
+msgid "Databases"
+msgstr ""
+
+#: ../../scenarios/db.rst:11
+msgid "DB-API"
+msgstr ""
+
+#: ../../scenarios/db.rst:13
+msgid ""
+"The Python Database API (DB-API) defines a standard interface for Python "
+"database access modules. It's documented in :pep:`249`. Nearly all Python"
+" database modules such as `sqlite3`, `psycopg`, and `mysql-python` "
+"conform to this interface."
+msgstr ""
+
+#: ../../scenarios/db.rst:18
+msgid ""
+"Tutorials that explain how to work with modules that conform to this "
+"interface can be found `here "
+"`__ "
+"and `here "
+"`__."
+msgstr ""
+
+#: ../../scenarios/db.rst:25
+msgid "SQLAlchemy"
+msgstr ""
+
+#: ../../scenarios/db.rst:27
+msgid ""
+"`SQLAlchemy `_ is a commonly used database "
+"toolkit. Unlike many database libraries it not only provides an ORM layer"
+" but also a generalized API for writing database-agnostic code without "
+"SQL."
+msgstr ""
+
+#: ../../scenarios/db.rst:38
+msgid "Records"
+msgstr ""
+
+#: ../../scenarios/db.rst:40
+msgid ""
+"`Records `_ is minimalist SQL "
+"library, designed for sending raw SQL queries to various databases. Data "
+"can be used programmatically or exported to a number of useful data "
+"formats."
+msgstr ""
+
+#: ../../scenarios/db.rst:48
+msgid "Also included is a command-line tool for exporting SQL data."
+msgstr ""
+
+#: ../../scenarios/db.rst:53
+msgid "PugSQL"
+msgstr ""
+
+#: ../../scenarios/db.rst:55
+msgid ""
+"`PugSQL `_ is a simple Python interface for "
+"organizing and using parameterized, handwritten SQL. It is an anti-ORM "
+"that is philosophically lo-fi, but it still presents a clean interface in"
+" Python."
+msgstr ""
+
+#: ../../scenarios/db.rst:66
+msgid "Django ORM"
+msgstr ""
+
+#: ../../scenarios/db.rst:68
+msgid ""
+"The Django ORM is the interface used by `Django "
+"`_ to provide database access."
+msgstr ""
+
+#: ../../scenarios/db.rst:71
+msgid ""
+"It's based on the idea of `models `_, an abstraction that makes it easier to manipulate "
+"data in Python."
+msgstr ""
+
+#: ../../scenarios/db.rst:75
+msgid "The basics:"
+msgstr ""
+
+#: ../../scenarios/db.rst:77
+msgid "Each model is a Python class that subclasses django.db.models.Model."
+msgstr ""
+
+#: ../../scenarios/db.rst:78
+msgid "Each attribute of the model represents a database field."
+msgstr ""
+
+#: ../../scenarios/db.rst:79
+msgid ""
+"Django gives you an automatically-generated database-access API; see "
+"`Making queries "
+"`__."
+msgstr ""
+
+#: ../../scenarios/db.rst:85
+msgid "peewee"
+msgstr ""
+
+#: ../../scenarios/db.rst:87
+msgid ""
+"`peewee `_ is another ORM with a "
+"focus on being lightweight with support for Python 2.6+ and 3.2+ which "
+"supports SQLite, MySQL, and PostgreSQL by default. The `model layer "
+"`_ is similar to that of the Django ORM and it has `SQL-like "
+"methods `_ to query data. While SQLite, MySQL, and PostgreSQL "
+"are supported out-of-the-box, there is a `collection of add-ons "
+"`_"
+" available."
+msgstr ""
+
+#: ../../scenarios/db.rst:100
+msgid "PonyORM"
+msgstr ""
+
+#: ../../scenarios/db.rst:102
+msgid ""
+"`PonyORM `_ is an ORM that takes a different "
+"approach to querying the database. Instead of writing an SQL-like "
+"language or boolean expressions, Python's generator syntax is used. "
+"There's also a graphical schema editor that can generate PonyORM entities"
+" for you. It supports Python 2.6+ and Python 3.3+ and can connect to "
+"SQLite, MySQL, PostgreSQL, and Oracle."
+msgstr ""
+
+#: ../../scenarios/db.rst:111
+msgid "SQLObject"
+msgstr ""
+
+#: ../../scenarios/db.rst:113
+msgid ""
+"`SQLObject `_ is yet another ORM. It supports "
+"a wide variety of databases: common database systems like MySQL, "
+"PostgreSQL, and SQLite and more exotic systems like SAP DB, SyBase, and "
+"Microsoft SQL Server. It only supports Python 2 from Python 2.6 upwards."
+msgstr ""
+
diff --git a/locales/zh_CN/LC_MESSAGES/scenarios/gui.po b/locales/zh_CN/LC_MESSAGES/scenarios/gui.po
new file mode 100644
index 000000000..412c43cde
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/scenarios/gui.po
@@ -0,0 +1,270 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../scenarios/gui.rst:4
+msgid "GUI Applications"
+msgstr ""
+
+#: ../../scenarios/gui.rst:9
+msgid "Alphabetical list of GUI Applications."
+msgstr ""
+
+#: ../../scenarios/gui.rst:14
+msgid "Camelot"
+msgstr ""
+
+#: ../../scenarios/gui.rst:16
+msgid ""
+"`Camelot `_ provides components for "
+"building applications on top of Python, SQLAlchemy, and Qt. It is "
+"inspired by the Django admin interface."
+msgstr ""
+
+#: ../../scenarios/gui.rst:20
+msgid ""
+"The main resource for information is the website: http://www.python-"
+"camelot.com and the mailing list https://groups.google.com/forum/#!forum"
+"/project-camelot."
+msgstr ""
+
+#: ../../scenarios/gui.rst:27
+msgid "Cocoa"
+msgstr ""
+
+#: ../../scenarios/gui.rst:29
+msgid ""
+"The Cocoa framework is only available on OS X. Don't pick this if you're "
+"writing a cross-platform application!"
+msgstr ""
+
+#: ../../scenarios/gui.rst:34
+msgid "GTk"
+msgstr ""
+
+#: ../../scenarios/gui.rst:36
+msgid ""
+"PyGTK provides Python bindings for the GTK+ toolkit. However, it has been"
+" superseded by PyGObject. PyGTK should not be used for new projects and "
+"existing projects should be ported to PyGObject."
+msgstr ""
+
+#: ../../scenarios/gui.rst:41
+msgid "PyGObject aka (PyGi)"
+msgstr ""
+
+#: ../../scenarios/gui.rst:43
+msgid ""
+"`PyGObject `_ provides Python "
+"bindings which gives access to the entire GNOME software platform. It is "
+"fully compatible with GTK+ 3. Here is a tutorial to get started with "
+"`Python GTK+ 3 Tutorial `_."
+msgstr ""
+
+#: ../../scenarios/gui.rst:48
+msgid "`API Reference `_"
+msgstr ""
+
+#: ../../scenarios/gui.rst:53
+msgid "Kivy"
+msgstr ""
+
+#: ../../scenarios/gui.rst:55
+msgid ""
+"`Kivy `_ is a Python library for development of multi-"
+"touch enabled media rich applications. The aim is to allow for quick and "
+"easy interaction design and rapid prototyping, while making your code "
+"reusable and deployable."
+msgstr ""
+
+#: ../../scenarios/gui.rst:60
+msgid ""
+"Kivy is written in Python, based on OpenGL, and supports different input "
+"devices such as: Mouse, Dual Mouse, TUIO, WiiMote, WM_TOUCH, HIDtouch, "
+"Apple's products, and so on."
+msgstr ""
+
+#: ../../scenarios/gui.rst:64
+msgid ""
+"Kivy is actively being developed by a community and is free to use. It "
+"operates on all major platforms (Linux, OS X, Windows, Android)."
+msgstr ""
+
+#: ../../scenarios/gui.rst:67
+msgid "The main resource for information is the website: http://kivy.org"
+msgstr ""
+
+#: ../../scenarios/gui.rst:72
+msgid "PyObjC"
+msgstr ""
+
+#: ../../scenarios/gui.rst:74
+msgid ""
+"Only available on OS X. Don't pick this if you're writing a cross-"
+"platform application."
+msgstr ""
+
+#: ../../scenarios/gui.rst:79
+msgid "PySide"
+msgstr ""
+
+#: ../../scenarios/gui.rst:81
+msgid ""
+"PySide is a Python binding of the cross-platform GUI toolkit Qt. The "
+"package name depends on the major Qt version (`PySide` for Qt4, `PySide2`"
+" for Qt5, and `PySide6` for Qt6). This set of bindings is developed by "
+"`The Qt Company `_."
+msgstr ""
+
+#: ../../scenarios/gui.rst:90
+msgid "https://pyside.org"
+msgstr ""
+
+#: ../../scenarios/gui.rst:95
+msgid "PyQt"
+msgstr ""
+
+#: ../../scenarios/gui.rst:97
+msgid ""
+"If your software does not fully comply with the GPL you will need a "
+"commercial license!"
+msgstr ""
+
+#: ../../scenarios/gui.rst:99
+msgid "PyQt provides Python bindings for the Qt Framework (see below)."
+msgstr ""
+
+#: ../../scenarios/gui.rst:101
+msgid "http://www.riverbankcomputing.co.uk/software/pyqt/download"
+msgstr ""
+
+#: ../../scenarios/gui.rst:106
+msgid "Pyjs Desktop (formerly Pyjamas Desktop)"
+msgstr ""
+
+#: ../../scenarios/gui.rst:108
+msgid ""
+"Pyjs Desktop is a application widget set for desktop and a cross-platform"
+" framework. It allows the exact same Python web application source code "
+"to be executed as a standalone desktop application."
+msgstr ""
+
+#: ../../scenarios/gui.rst:113
+msgid "The main website: `pyjs `_."
+msgstr ""
+
+#: ../../scenarios/gui.rst:118
+msgid "Qt"
+msgstr ""
+
+#: ../../scenarios/gui.rst:120
+msgid ""
+"`Qt `_ is a cross-platform application framework "
+"that is widely used for developing software with a GUI but can also be "
+"used for non-GUI applications."
+msgstr ""
+
+#: ../../scenarios/gui.rst:127
+msgid "PySimpleGUI"
+msgstr ""
+
+#: ../../scenarios/gui.rst:129
+msgid ""
+"`PySimpleGUI `_ is a wrapper for "
+"Tkinter and Qt (others on the way). The amount of code required to "
+"implement custom GUIs is much shorter using PySimpleGUI than if the same "
+"GUI were written directly using Tkinter or Qt. PySimpleGUI code can be "
+"\"ported\" between GUI frameworks by changing import statements."
+msgstr ""
+
+#: ../../scenarios/gui.rst:139
+msgid ""
+"PySimpleGUI is contained in a single PySimpleGUI.py file. Should pip "
+"installation be impossible, copying the PySimpleGUI.py file into a "
+"project's folder is all that's required to import and begin using."
+msgstr ""
+
+#: ../../scenarios/gui.rst:146
+msgid "Toga"
+msgstr ""
+
+#: ../../scenarios/gui.rst:148
+msgid ""
+"`Toga `_ is a Python native, OS "
+"native, cross platform GUI toolkit. Toga consists of a library of base "
+"components with a shared interface to simplify platform-agnostic GUI "
+"development."
+msgstr ""
+
+#: ../../scenarios/gui.rst:152
+msgid ""
+"Toga is available on macOS, Windows, Linux (GTK), and mobile platforms "
+"such as Android and iOS."
+msgstr ""
+
+#: ../../scenarios/gui.rst:158
+msgid "Tk"
+msgstr ""
+
+#: ../../scenarios/gui.rst:160
+msgid ""
+"Tkinter is a thin object-oriented layer on top of Tcl/Tk. **It has the "
+"advantage of being included with the Python standard library, making it "
+"the most convenient and compatible toolkit to program with.**"
+msgstr ""
+
+#: ../../scenarios/gui.rst:164
+msgid ""
+"Both Tk and Tkinter are available on most Unix platforms, as well as on "
+"Windows and Macintosh systems. Starting with the 8.0 release, Tk offers "
+"native look and feel on all platforms."
+msgstr ""
+
+#: ../../scenarios/gui.rst:168
+msgid ""
+"There's a good multi-language Tk tutorial with Python examples at `TkDocs"
+" `_. There's more information "
+"available on the `Python Wiki `_."
+msgstr ""
+
+#: ../../scenarios/gui.rst:175
+msgid "wxPython"
+msgstr ""
+
+#: ../../scenarios/gui.rst:177
+msgid ""
+"wxPython is a GUI toolkit for the Python programming language. It allows "
+"Python programmers to create programs with a robust, highly functional "
+"graphical user interface, simply and easily. It is implemented as a "
+"Python extension module (native code) that wraps the popular wxWidgets "
+"cross platform GUI library, which is written in C++."
+msgstr ""
+
+#: ../../scenarios/gui.rst:183
+msgid ""
+"**Install (Stable) wxPython** *go to "
+"https://www.wxpython.org/pages/downloads/ and download the appropriate "
+"package for your OS.*"
+msgstr ""
+
diff --git a/locales/zh_CN/LC_MESSAGES/scenarios/imaging.po b/locales/zh_CN/LC_MESSAGES/scenarios/imaging.po
new file mode 100644
index 000000000..92d2b1f0b
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/scenarios/imaging.po
@@ -0,0 +1,115 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../scenarios/imaging.rst:4
+msgid "Image Manipulation"
+msgstr ""
+
+#: ../../scenarios/imaging.rst:8
+msgid ""
+"Most image processing and manipulation techniques can be carried out "
+"effectively using two libraries: Python Imaging Library (PIL) and Open "
+"Source Computer Vision (OpenCV)."
+msgstr ""
+
+#: ../../scenarios/imaging.rst:12
+msgid "A brief description of both is given below."
+msgstr ""
+
+#: ../../scenarios/imaging.rst:17
+msgid "Python Imaging Library"
+msgstr ""
+
+#: ../../scenarios/imaging.rst:19
+msgid ""
+"The `Python Imaging Library `_, "
+"or PIL for short, is one of the core libraries for image manipulation in "
+"Python. Unfortunately, its development has stagnated, with its last "
+"release in 2009."
+msgstr ""
+
+#: ../../scenarios/imaging.rst:23
+msgid ""
+"Luckily for you, there's an actively-developed fork of PIL called `Pillow"
+" `_ -- it's easier to install, runs on "
+"all major operating systems, and supports Python 3."
+msgstr ""
+
+#: ../../scenarios/imaging.rst:28 ../../scenarios/imaging.rst:77
+msgid "Installation"
+msgstr ""
+
+#: ../../scenarios/imaging.rst:30
+msgid ""
+"Before installing Pillow, you'll have to install Pillow's prerequisites. "
+"Find the instructions for your platform in the `Pillow installation "
+"instructions "
+"`_."
+msgstr ""
+
+#: ../../scenarios/imaging.rst:34
+msgid "After that, it's straightforward:"
+msgstr ""
+
+#: ../../scenarios/imaging.rst:41 ../../scenarios/imaging.rst:92
+msgid "Example"
+msgstr ""
+
+#: ../../scenarios/imaging.rst:64
+msgid ""
+"There are more examples of the Pillow library in the `Pillow tutorial "
+"`_."
+msgstr ""
+
+#: ../../scenarios/imaging.rst:70
+msgid "Open Source Computer Vision"
+msgstr ""
+
+#: ../../scenarios/imaging.rst:72
+msgid ""
+"Open Source Computer Vision, more commonly known as OpenCV, is a more "
+"advanced image manipulation and processing software than PIL. It has been"
+" implemented in several languages and is widely used."
+msgstr ""
+
+#: ../../scenarios/imaging.rst:79
+msgid ""
+"In Python, image processing using OpenCV is implemented using the ``cv2``"
+" and ``NumPy`` modules. The `installation instructions for OpenCV "
+"`_ should guide you through configuring "
+"the project for yourself."
+msgstr ""
+
+#: ../../scenarios/imaging.rst:84
+msgid "NumPy can be downloaded from the Python Package Index(PyPI):"
+msgstr ""
+
+#: ../../scenarios/imaging.rst:110
+msgid ""
+"There are more Python-implemented examples of OpenCV in this `collection "
+"of tutorials `_."
+msgstr ""
+
diff --git a/locales/zh_CN/LC_MESSAGES/scenarios/json.po b/locales/zh_CN/LC_MESSAGES/scenarios/json.po
new file mode 100644
index 000000000..50bb5257c
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/scenarios/json.po
@@ -0,0 +1,56 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../scenarios/json.rst:4
+msgid "JSON"
+msgstr ""
+
+#: ../../scenarios/json.rst:8
+msgid ""
+"The `json `_ library can "
+"parse JSON from strings or files. The library parses JSON into a Python "
+"dictionary or list. It can also convert Python dictionaries or lists into"
+" JSON strings."
+msgstr ""
+
+#: ../../scenarios/json.rst:15
+msgid "Parsing JSON"
+msgstr ""
+
+#: ../../scenarios/json.rst:17
+msgid "Take the following string containing JSON data:"
+msgstr ""
+
+#: ../../scenarios/json.rst:23
+msgid "It can be parsed like this:"
+msgstr ""
+
+#: ../../scenarios/json.rst:30
+msgid "and can now be used as a normal dictionary:"
+msgstr ""
+
+#: ../../scenarios/json.rst:37
+msgid "You can also convert the following to JSON:"
+msgstr ""
+
diff --git a/locales/zh_CN/LC_MESSAGES/scenarios/ml.po b/locales/zh_CN/LC_MESSAGES/scenarios/ml.po
new file mode 100644
index 000000000..5c1eab3ce
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/scenarios/ml.po
@@ -0,0 +1,192 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../scenarios/ml.rst:5
+msgid "Machine Learning"
+msgstr ""
+
+#: ../../scenarios/ml.rst:9
+msgid ""
+"Python has a vast number of libraries for data analysis, statistics, and "
+"Machine Learning itself, making it a language of choice for many data "
+"scientists."
+msgstr ""
+
+#: ../../scenarios/ml.rst:11
+msgid ""
+"Some widely used packages for Machine Learning and other data science "
+"applications are listed below."
+msgstr ""
+
+#: ../../scenarios/ml.rst:16
+msgid "SciPy Stack"
+msgstr ""
+
+#: ../../scenarios/ml.rst:18
+msgid ""
+"The SciPy stack consists of a bunch of core helper packages used in data "
+"science for statistical analysis and visualising data. Because of its "
+"huge number of functionalities and ease of use, the Stack is considered a"
+" must-have for most data science applications."
+msgstr ""
+
+#: ../../scenarios/ml.rst:20
+msgid ""
+"The Stack consists of the following packages (link to documentation "
+"given):"
+msgstr ""
+
+#: ../../scenarios/ml.rst:22
+msgid "`NumPy `_"
+msgstr ""
+
+#: ../../scenarios/ml.rst:23
+msgid "`SciPy library `_"
+msgstr ""
+
+#: ../../scenarios/ml.rst:24
+msgid "`Matplotlib `_"
+msgstr ""
+
+#: ../../scenarios/ml.rst:25
+msgid "`IPython `_"
+msgstr ""
+
+#: ../../scenarios/ml.rst:26
+msgid "`pandas `_"
+msgstr ""
+
+#: ../../scenarios/ml.rst:27
+msgid "`Sympy `_"
+msgstr ""
+
+#: ../../scenarios/ml.rst:28
+msgid "`nose `_"
+msgstr ""
+
+#: ../../scenarios/ml.rst:30
+msgid ""
+"The stack also comes with Python bundled in, but has been excluded from "
+"the above list."
+msgstr ""
+
+#: ../../scenarios/ml.rst:33 ../../scenarios/ml.rst:49
+msgid "Installation"
+msgstr ""
+
+#: ../../scenarios/ml.rst:35
+msgid ""
+"For installing the full stack, or individual packages, you can refer to "
+"the instructions given `here `_."
+msgstr ""
+
+#: ../../scenarios/ml.rst:37
+msgid ""
+"**NB:** `Anaconda `_ is "
+"highly preferred and recommended for installing and maintaining data "
+"science packages seamlessly."
+msgstr ""
+
+#: ../../scenarios/ml.rst:42
+msgid "scikit-learn"
+msgstr ""
+
+#: ../../scenarios/ml.rst:44
+msgid ""
+"Scikit is a free and open source machine learning library for Python. It "
+"offers off-the-shelf functions to implement many algorithms like linear "
+"regression, classifiers, SVMs, k-means, Neural Networks, etc. It also has"
+" a few sample datasets which can be directly used for training and "
+"testing."
+msgstr ""
+
+#: ../../scenarios/ml.rst:46
+msgid ""
+"Because of its speed, robustness, and ease of, it's one of the most "
+"widely-used libraries for many Machine Learning applications."
+msgstr ""
+
+#: ../../scenarios/ml.rst:51
+msgid "Through PyPI:"
+msgstr ""
+
+#: ../../scenarios/ml.rst:57
+msgid "Through conda:"
+msgstr ""
+
+#: ../../scenarios/ml.rst:63
+msgid ""
+"scikit-learn also comes shipped with Anaconda (mentioned above). For more"
+" installation instructions, refer to `this link `_."
+msgstr ""
+
+#: ../../scenarios/ml.rst:66
+msgid "Example"
+msgstr ""
+
+#: ../../scenarios/ml.rst:68
+msgid ""
+"For this example, we train a simple classifier on the `Iris dataset "
+"`_, which comes "
+"bundled in with scikit-learn."
+msgstr ""
+
+#: ../../scenarios/ml.rst:70
+msgid ""
+"The dataset takes four features of flowers: sepal length, sepal width, "
+"petal length, and petal width, and classifies them into three flower "
+"species (labels): setosa, versicolor, or virginica. The labels have been "
+"represented as numbers in the dataset: 0 (setosa), 1 (versicolor), and 2 "
+"(virginica)."
+msgstr ""
+
+#: ../../scenarios/ml.rst:72
+msgid ""
+"We shuffle the Iris dataset and divide it into separate training and "
+"testing sets, keeping the last 10 data points for testing and rest for "
+"training. We then train the classifier on the training set and predict on"
+" the testing set."
+msgstr ""
+
+#: ../../scenarios/ml.rst:115
+msgid ""
+"Since we're splitting randomly and the classifier trains on every "
+"iteration, the accuracy may vary. Running the above code gives:"
+msgstr ""
+
+#: ../../scenarios/ml.rst:123
+msgid ""
+"The first line contains the labels (i.e. flower species) of the testing "
+"data as predicted by our classifier, and the second line contains the "
+"actual flower species as given in the dataset. We thus get an accuracy of"
+" 100% this time."
+msgstr ""
+
+#: ../../scenarios/ml.rst:125
+msgid ""
+"More on scikit-learn can be read in the `documentation `_."
+msgstr ""
+
diff --git a/locales/zh_CN/LC_MESSAGES/scenarios/network.po b/locales/zh_CN/LC_MESSAGES/scenarios/network.po
new file mode 100644
index 000000000..edd2f0d5b
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/scenarios/network.po
@@ -0,0 +1,90 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../scenarios/network.rst:4
+msgid "Networking"
+msgstr ""
+
+#: ../../scenarios/network.rst:11
+msgid "Twisted"
+msgstr ""
+
+#: ../../scenarios/network.rst:13
+msgid ""
+"`Twisted `_ is an event-driven "
+"networking engine. It can be used to build applications around many "
+"different networking protocols, including HTTP servers and clients, "
+"applications using SMTP, POP3, IMAP, or SSH protocols, instant messaging,"
+" and `much more `_."
+msgstr ""
+
+#: ../../scenarios/network.rst:22
+msgid "PyZMQ"
+msgstr ""
+
+#: ../../scenarios/network.rst:24
+msgid ""
+"`PyZMQ `_ is the Python binding for "
+"`ZeroMQ `_, which is a high-performance asynchronous "
+"messaging library. One great advantage of ZeroMQ is that it can be used "
+"for message queuing without a message broker. The basic patterns for this"
+" are:"
+msgstr ""
+
+#: ../../scenarios/network.rst:29
+msgid ""
+"request-reply: connects a set of clients to a set of services. This is a "
+"remote procedure call and task distribution pattern."
+msgstr ""
+
+#: ../../scenarios/network.rst:31
+msgid ""
+"publish-subscribe: connects a set of publishers to a set of subscribers. "
+"This is a data distribution pattern."
+msgstr ""
+
+#: ../../scenarios/network.rst:33
+msgid ""
+"push-pull (or pipeline): connects nodes in a fan-out/fan-in pattern that "
+"can have multiple steps and loops. This is a parallel task distribution "
+"and collection pattern."
+msgstr ""
+
+#: ../../scenarios/network.rst:37
+msgid ""
+"For a quick start, read the `ZeroMQ guide "
+"`_."
+msgstr ""
+
+#: ../../scenarios/network.rst:42
+msgid "gevent"
+msgstr ""
+
+#: ../../scenarios/network.rst:44
+msgid ""
+"`gevent `_ is a coroutine-based Python networking"
+" library that uses greenlets to provide a high-level synchronous API on "
+"top of the libev event loop."
+msgstr ""
+
diff --git a/locales/zh_CN/LC_MESSAGES/scenarios/scientific.po b/locales/zh_CN/LC_MESSAGES/scenarios/scientific.po
new file mode 100644
index 000000000..23311fca6
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/scenarios/scientific.po
@@ -0,0 +1,248 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../scenarios/scientific.rst:4
+msgid "Scientific Applications"
+msgstr ""
+
+#: ../../scenarios/scientific.rst:11
+msgid "Context"
+msgstr ""
+
+#: ../../scenarios/scientific.rst:13
+msgid ""
+"Python is frequently used for high-performance scientific applications. "
+"It is widely used in academia and scientific projects because it is easy "
+"to write and performs well."
+msgstr ""
+
+#: ../../scenarios/scientific.rst:17
+msgid ""
+"Due to its high performance nature, scientific computing in Python often "
+"utilizes external libraries, typically written in faster languages (like "
+"C, or Fortran for matrix operations). The main libraries used are "
+"`NumPy`_, `SciPy`_ and `Matplotlib`_. Going into detail about these "
+"libraries is beyond the scope of the Python guide. However, a "
+"comprehensive introduction to the scientific Python ecosystem can be "
+"found in the `Python Scientific Lecture Notes `_."
+msgstr ""
+
+#: ../../scenarios/scientific.rst:28
+msgid "Tools"
+msgstr ""
+
+#: ../../scenarios/scientific.rst:31
+msgid "IPython"
+msgstr ""
+
+#: ../../scenarios/scientific.rst:33
+msgid ""
+"`IPython `_ is an enhanced version of Python "
+"interpreter, which provides features of great interest to scientists. The"
+" `inline mode` allows graphics and plots to be displayed in the terminal "
+"(Qt based version). Moreover, the `notebook` mode supports literate "
+"programming and reproducible science generating a web-based Python "
+"notebook. This notebook allows you to store chunks of Python code "
+"alongside the results and additional comments (HTML, LaTeX, Markdown). "
+"The notebook can then be shared and exported in various file formats."
+msgstr ""
+
+#: ../../scenarios/scientific.rst:45
+msgid "Libraries"
+msgstr ""
+
+#: ../../scenarios/scientific.rst:48
+msgid "NumPy"
+msgstr ""
+
+#: ../../scenarios/scientific.rst:50
+msgid ""
+"`NumPy `_ is a low level library written in C "
+"(and Fortran) for high level mathematical functions. NumPy cleverly "
+"overcomes the problem of running slower algorithms on Python by using "
+"multidimensional arrays and functions that operate on arrays. Any "
+"algorithm can then be expressed as a function on arrays, allowing the "
+"algorithms to be run quickly."
+msgstr ""
+
+#: ../../scenarios/scientific.rst:56
+msgid ""
+"NumPy is part of the SciPy project, and is released as a separate library"
+" so people who only need the basic requirements can use it without "
+"installing the rest of SciPy."
+msgstr ""
+
+#: ../../scenarios/scientific.rst:60
+msgid "NumPy is compatible with Python versions 2.4 through 2.7.2 and 3.1+."
+msgstr ""
+
+#: ../../scenarios/scientific.rst:63
+msgid "Numba"
+msgstr ""
+
+#: ../../scenarios/scientific.rst:65
+msgid ""
+"`Numba `_ is a NumPy aware Python compiler "
+"(just-in-time (JIT) specializing compiler) which compiles annotated "
+"Python (and NumPy) code to LLVM (Low Level Virtual Machine) through "
+"special decorators. Briefly, Numba uses a system that compiles Python "
+"code with LLVM to code which can be natively executed at runtime."
+msgstr ""
+
+#: ../../scenarios/scientific.rst:72
+msgid "SciPy"
+msgstr ""
+
+#: ../../scenarios/scientific.rst:74
+msgid ""
+"`SciPy `_ is a library that uses NumPy for more "
+"mathematical functions. SciPy uses NumPy arrays as the basic data "
+"structure, and comes with modules for various commonly used tasks in "
+"scientific programming, including linear algebra, integration (calculus),"
+" ordinary differential equation solving, and signal processing."
+msgstr ""
+
+#: ../../scenarios/scientific.rst:81
+msgid "Matplotlib"
+msgstr ""
+
+#: ../../scenarios/scientific.rst:83
+msgid ""
+"`Matplotlib `_ is a flexible plotting"
+" library for creating interactive 2D and 3D plots that can also be saved "
+"as manuscript-quality figures. The API in many ways reflects that of "
+"`MATLAB `_, easing transition "
+"of MATLAB users to Python. Many examples, along with the source code to "
+"recreate them, are available in the `matplotlib gallery "
+"`_."
+msgstr ""
+
+#: ../../scenarios/scientific.rst:92
+msgid "Pandas"
+msgstr ""
+
+#: ../../scenarios/scientific.rst:94
+msgid ""
+"`Pandas `_ is a data manipulation library "
+"based on NumPy which provides many useful functions for accessing, "
+"indexing, merging, and grouping data easily. The main data structure "
+"(DataFrame) is close to what could be found in the R statistical package;"
+" that is, heterogeneous data tables with name indexing, time series "
+"operations, and auto-alignment of data."
+msgstr ""
+
+#: ../../scenarios/scientific.rst:102
+msgid "xarray"
+msgstr ""
+
+#: ../../scenarios/scientific.rst:104
+msgid ""
+"`xarray `_ is similar to Pandas, but"
+" it is intended for wrapping multidimensional scientific data. By "
+"labelling the data with dimensions, coordinates, and attributes, it makes"
+" complex multidimensional operations clearer and more intuitive. It also "
+"wraps matplotlib for quick plotting, and can apply most operations in "
+"parallel using `dask `_."
+msgstr ""
+
+#: ../../scenarios/scientific.rst:113
+msgid "Rpy2"
+msgstr ""
+
+#: ../../scenarios/scientific.rst:115
+msgid ""
+"`Rpy2 `_ is a Python binding for the R "
+"statistical package allowing the execution of R functions from Python and"
+" passing data back and forth between the two environments. Rpy2 is the "
+"object oriented implementation of the `Rpy "
+"`_ bindings."
+msgstr ""
+
+#: ../../scenarios/scientific.rst:122
+msgid "PsychoPy"
+msgstr ""
+
+#: ../../scenarios/scientific.rst:124
+msgid ""
+"`PsychoPy `_ is a library for cognitive "
+"scientists allowing the creation of cognitive psychology and neuroscience"
+" experiments. The library handles presentation of stimuli, scripting of "
+"experimental design, and data collection."
+msgstr ""
+
+#: ../../scenarios/scientific.rst:132
+msgid "Resources"
+msgstr ""
+
+#: ../../scenarios/scientific.rst:134
+msgid ""
+"Installation of scientific Python packages can be troublesome, as many of"
+" these packages are implemented as Python C extensions which need to be "
+"compiled. This section lists various so-called scientific Python "
+"distributions which provide precompiled and easy-to-install collections "
+"of scientific Python packages."
+msgstr ""
+
+#: ../../scenarios/scientific.rst:141
+msgid "Unofficial Windows Binaries for Python Extension Packages"
+msgstr ""
+
+#: ../../scenarios/scientific.rst:143
+msgid ""
+"Many people who do scientific computing are on Windows, yet many of the "
+"scientific computing packages are notoriously difficult to build and "
+"install on this platform. `Christoph Gohlke "
+"`_, however, has compiled a "
+"list of Windows binaries for many useful Python packages. The list of "
+"packages has grown from a mainly scientific Python resource to a more "
+"general list. If you're on Windows, you may want to check it out."
+msgstr ""
+
+#: ../../scenarios/scientific.rst:152
+msgid "Anaconda"
+msgstr ""
+
+#: ../../scenarios/scientific.rst:154
+msgid ""
+"The `Anaconda Python Distribution `_ includes "
+"all the common scientific Python packages as well as many packages "
+"related to data analytics and big data. Anaconda itself is free, and a "
+"number of proprietary add-ons are available for a fee. Free licenses for "
+"the add-ons are available for academics and researchers."
+msgstr ""
+
+#: ../../scenarios/scientific.rst:161
+msgid "Canopy"
+msgstr ""
+
+#: ../../scenarios/scientific.rst:163
+msgid ""
+"`Canopy `_ is another "
+"scientific Python distribution, produced by `Enthought "
+"`_. A limited 'Canopy Express' variant is "
+"available for free, but Enthought charges for the full distribution. Free"
+" licenses are available for academics."
+msgstr ""
+
diff --git a/locales/zh_CN/LC_MESSAGES/scenarios/scrape.po b/locales/zh_CN/LC_MESSAGES/scenarios/scrape.po
new file mode 100644
index 000000000..5fc01cc08
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/scenarios/scrape.po
@@ -0,0 +1,132 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../scenarios/scrape.rst:4
+msgid "HTML Scraping"
+msgstr ""
+
+#: ../../scenarios/scrape.rst:11
+msgid "Web Scraping"
+msgstr ""
+
+#: ../../scenarios/scrape.rst:13
+msgid ""
+"Web sites are written using HTML, which means that each web page is a "
+"structured document. Sometimes it would be great to obtain some data from"
+" them and preserve the structure while we're at it. Web sites don't "
+"always provide their data in comfortable formats such as CSV or JSON."
+msgstr ""
+
+#: ../../scenarios/scrape.rst:18
+msgid ""
+"This is where web scraping comes in. Web scraping is the practice of "
+"using a computer program to sift through a web page and gather the data "
+"that you need in a format most useful to you while at the same time "
+"preserving the structure of the data."
+msgstr ""
+
+#: ../../scenarios/scrape.rst:26
+msgid "lxml and Requests"
+msgstr ""
+
+#: ../../scenarios/scrape.rst:28
+msgid ""
+"`lxml `_ is a pretty extensive library written for "
+"parsing XML and HTML documents very quickly, even handling messed up tags"
+" in the process. We will also be using the `Requests `_ module instead of the already built-in urllib2"
+" module due to improvements in speed and readability. You can easily "
+"install both using ``pip install lxml`` and ``pip install requests``."
+msgstr ""
+
+#: ../../scenarios/scrape.rst:36
+msgid "Let's start with the imports:"
+msgstr ""
+
+#: ../../scenarios/scrape.rst:43
+msgid ""
+"Next we will use ``requests.get`` to retrieve the web page with our data,"
+" parse it using the ``html`` module, and save the results in ``tree``:"
+msgstr ""
+
+#: ../../scenarios/scrape.rst:51
+msgid ""
+"(We need to use ``page.content`` rather than ``page.text`` because "
+"``html.fromstring`` implicitly expects ``bytes`` as input.)"
+msgstr ""
+
+#: ../../scenarios/scrape.rst:54
+msgid ""
+"``tree`` now contains the whole HTML file in a nice tree structure which "
+"we can go over two different ways: XPath and CSSSelect. In this example, "
+"we will focus on the former."
+msgstr ""
+
+#: ../../scenarios/scrape.rst:58
+msgid ""
+"XPath is a way of locating information in structured documents such as "
+"HTML or XML documents. A good introduction to XPath is on `W3Schools "
+"`_ ."
+msgstr ""
+
+#: ../../scenarios/scrape.rst:62
+msgid ""
+"There are also various tools for obtaining the XPath of elements such as "
+"FireBug for Firefox or the Chrome Inspector. If you're using Chrome, you "
+"can right click an element, choose 'Inspect element', highlight the code,"
+" right click again, and choose 'Copy XPath'."
+msgstr ""
+
+#: ../../scenarios/scrape.rst:67
+msgid ""
+"After a quick analysis, we see that in our page the data is contained in "
+"two elements -- one is a div with title 'buyer-name' and the other is a "
+"span with class 'item-price':"
+msgstr ""
+
+#: ../../scenarios/scrape.rst:76
+msgid ""
+"Knowing this we can create the correct XPath query and use the lxml "
+"``xpath`` function like this:"
+msgstr ""
+
+#: ../../scenarios/scrape.rst:86
+msgid "Let's see what we got exactly:"
+msgstr ""
+
+#: ../../scenarios/scrape.rst:106
+msgid ""
+"Congratulations! We have successfully scraped all the data we wanted from"
+" a web page using lxml and Requests. We have it stored in memory as two "
+"lists. Now we can do all sorts of cool stuff with it: we can analyze it "
+"using Python or we can save it to a file and share it with the world."
+msgstr ""
+
+#: ../../scenarios/scrape.rst:111
+msgid ""
+"Some more cool ideas to think about are modifying this script to iterate "
+"through the rest of the pages of this example dataset, or rewriting this "
+"application to use threads for improved speed."
+msgstr ""
+
diff --git a/locales/zh_CN/LC_MESSAGES/scenarios/serialization.po b/locales/zh_CN/LC_MESSAGES/scenarios/serialization.po
new file mode 100644
index 000000000..6a49aeb2c
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/scenarios/serialization.po
@@ -0,0 +1,223 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../scenarios/serialization.rst:4
+msgid "Data Serialization"
+msgstr ""
+
+#: ../../scenarios/serialization.rst:11
+msgid "What is data serialization?"
+msgstr ""
+
+#: ../../scenarios/serialization.rst:13
+msgid ""
+"Data serialization is the process of converting structured data to a "
+"format that allows sharing or storage of the data in a form that allows "
+"recovery of its original structure. In some cases, the secondary "
+"intention of data serialization is to minimize the data's size which then"
+" reduces disk space or bandwidth requirements."
+msgstr ""
+
+#: ../../scenarios/serialization.rst:21
+msgid "Flat vs. Nested data"
+msgstr ""
+
+#: ../../scenarios/serialization.rst:23
+msgid ""
+"Before beginning to serialize data, it is important to identify or decide"
+" how the data should be structured during data serialization - flat or "
+"nested. The differences in the two styles are shown in the below "
+"examples."
+msgstr ""
+
+#: ../../scenarios/serialization.rst:27
+msgid "Flat style:"
+msgstr ""
+
+#: ../../scenarios/serialization.rst:34
+msgid "Nested style:"
+msgstr ""
+
+#: ../../scenarios/serialization.rst:42
+msgid ""
+"For more reading on the two styles, please see the discussion on `Python "
+"mailing list `__, `IETF mailing list "
+"`__ and"
+" `in stackexchange "
+"`__."
+msgstr ""
+
+#: ../../scenarios/serialization.rst:49
+msgid "Serializing Text"
+msgstr ""
+
+#: ../../scenarios/serialization.rst:53
+msgid "Simple file (flat data)"
+msgstr ""
+
+#: ../../scenarios/serialization.rst:55
+msgid ""
+"If the data to be serialized is located in a file and contains flat data,"
+" Python offers two methods to serialize data."
+msgstr ""
+
+#: ../../scenarios/serialization.rst:58
+msgid "repr"
+msgstr ""
+
+#: ../../scenarios/serialization.rst:60
+msgid ""
+"The repr method in Python takes a single object parameter and returns a "
+"printable representation of the input:"
+msgstr ""
+
+#: ../../scenarios/serialization.rst:79
+msgid "ast.literal_eval"
+msgstr ""
+
+#: ../../scenarios/serialization.rst:81
+msgid ""
+"The literal_eval method safely parses and evaluates an expression for a "
+"Python datatype. Supported data types are: strings, numbers, tuples, "
+"lists, dicts, booleans, and None."
+msgstr ""
+
+#: ../../scenarios/serialization.rst:90
+msgid "CSV file (flat data)"
+msgstr ""
+
+#: ../../scenarios/serialization.rst:92
+msgid ""
+"The CSV module in Python implements classes to read and write tabular "
+"data in CSV format."
+msgstr ""
+
+#: ../../scenarios/serialization.rst:95
+msgid "Simple example for reading:"
+msgstr ""
+
+#: ../../scenarios/serialization.rst:106
+msgid "Simple example for writing:"
+msgstr ""
+
+#: ../../scenarios/serialization.rst:117
+msgid ""
+"The module's contents, functions, and examples can be found `in the "
+"Python documentation `__."
+msgstr ""
+
+#: ../../scenarios/serialization.rst:122
+msgid "YAML (nested data)"
+msgstr ""
+
+#: ../../scenarios/serialization.rst:124
+msgid ""
+"There are many third party modules to parse and read/write YAML file "
+"structures in Python. One such example is below."
+msgstr ""
+
+#: ../../scenarios/serialization.rst:137
+msgid ""
+"Documentation on the third party module can be found `in the PyYAML "
+"Documentation `__."
+msgstr ""
+
+#: ../../scenarios/serialization.rst:142
+msgid "JSON file (nested data)"
+msgstr ""
+
+#: ../../scenarios/serialization.rst:144
+msgid ""
+"Python's JSON module can be used to read and write JSON files. Example "
+"code is below."
+msgstr ""
+
+#: ../../scenarios/serialization.rst:147
+msgid "Reading:"
+msgstr ""
+
+#: ../../scenarios/serialization.rst:156
+msgid "Writing:"
+msgstr ""
+
+#: ../../scenarios/serialization.rst:167
+msgid "XML (nested data)"
+msgstr ""
+
+#: ../../scenarios/serialization.rst:169
+msgid "XML parsing in Python is possible using the `xml` package."
+msgstr ""
+
+#: ../../scenarios/serialization.rst:171 ../../scenarios/serialization.rst:194
+msgid "Example:"
+msgstr ""
+
+#: ../../scenarios/serialization.rst:180
+msgid ""
+"More documentation on using the `xml.dom` and `xml.sax` packages can be "
+"found `in the Python XML library documentation "
+"`__."
+msgstr ""
+
+#: ../../scenarios/serialization.rst:186
+msgid "Binary"
+msgstr ""
+
+#: ../../scenarios/serialization.rst:190
+msgid "NumPy Array (flat data)"
+msgstr ""
+
+#: ../../scenarios/serialization.rst:192
+msgid ""
+"Python's NumPy array can be used to serialize and deserialize data to and"
+" from byte representation."
+msgstr ""
+
+#: ../../scenarios/serialization.rst:210
+msgid "Pickle (nested data)"
+msgstr ""
+
+#: ../../scenarios/serialization.rst:212
+msgid ""
+"The native data serialization module for Python is called `Pickle "
+"`_."
+msgstr ""
+
+#: ../../scenarios/serialization.rst:215
+msgid "Here's an example:"
+msgstr ""
+
+#: ../../scenarios/serialization.rst:233
+msgid "Protobuf"
+msgstr ""
+
+#: ../../scenarios/serialization.rst:235
+msgid ""
+"If you're looking for a serialization module that has support in multiple"
+" languages, Google's `Protobuf `_ library is an option."
+msgstr ""
+
diff --git a/locales/zh_CN/LC_MESSAGES/scenarios/speed.po b/locales/zh_CN/LC_MESSAGES/scenarios/speed.po
new file mode 100644
index 000000000..2136b404a
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/scenarios/speed.po
@@ -0,0 +1,362 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../scenarios/speed.rst:4
+msgid "Speed"
+msgstr ""
+
+#: ../../scenarios/speed.rst:8
+msgid ""
+"CPython, the most commonly used implementation of Python, is slow for CPU"
+" bound tasks. `PyPy`_ is fast."
+msgstr ""
+
+#: ../../scenarios/speed.rst:11
+msgid ""
+"Using a slightly modified version of `David Beazley's`_ CPU bound test "
+"code (added loop for multiple tests), you can see the difference between "
+"CPython and PyPy's processing."
+msgstr ""
+
+#: ../../scenarios/speed.rst:43
+msgid "Context"
+msgstr ""
+
+#: ../../scenarios/speed.rst:47 ../../scenarios/speed.rst:65
+msgid "The GIL"
+msgstr ""
+
+#: ../../scenarios/speed.rst:49
+msgid ""
+"`The GIL`_ (Global Interpreter Lock) is how Python allows multiple "
+"threads to operate at the same time. Python's memory management isn't "
+"entirely thread-safe, so the GIL is required to prevent multiple threads "
+"from running the same Python code at once."
+msgstr ""
+
+#: ../../scenarios/speed.rst:54
+msgid ""
+"David Beazley has a great `guide`_ on how the GIL operates. He also "
+"covers the `new GIL`_ in Python 3.2. His results show that maximizing "
+"performance in a Python application requires a strong understanding of "
+"the GIL, how it affects your specific application, how many cores you "
+"have, and where your application bottlenecks are."
+msgstr ""
+
+#: ../../scenarios/speed.rst:61 ../../scenarios/speed.rst:73
+msgid "C Extensions"
+msgstr ""
+
+#: ../../scenarios/speed.rst:67
+msgid ""
+"`Special care`_ must be taken when writing C extensions to make sure you "
+"register your threads with the interpreter."
+msgstr ""
+
+#: ../../scenarios/speed.rst:77
+msgid "Cython"
+msgstr ""
+
+#: ../../scenarios/speed.rst:79
+msgid ""
+"`Cython `_ implements a superset of the Python "
+"language with which you are able to write C and C++ modules for Python. "
+"Cython also allows you to call functions from compiled C libraries. Using"
+" Cython allows you to take advantage of Python's strong typing of "
+"variables and operations."
+msgstr ""
+
+#: ../../scenarios/speed.rst:84
+msgid "Here's an example of strong typing with Cython:"
+msgstr ""
+
+#: ../../scenarios/speed.rst:111
+msgid ""
+"This implementation of an algorithm to find prime numbers has some "
+"additional keywords compared to the next one, which is implemented in "
+"pure Python:"
+msgstr ""
+
+#: ../../scenarios/speed.rst:136
+msgid ""
+"Notice that in the Cython version you declare integers and integer arrays"
+" to be compiled into C types while also creating a Python list:"
+msgstr ""
+
+#: ../../scenarios/speed.rst:159
+msgid ""
+"What is the difference? In the upper Cython version you can see the "
+"declaration of the variable types and the integer array in a similar way "
+"as in standard C. For example `cdef int n,k,i` in line 3. This additional"
+" type declaration (i.e. integer) allows the Cython compiler to generate "
+"more efficient C code from the second version. While standard Python code"
+" is saved in :file:`*.py` files, Cython code is saved in :file:`*.pyx` "
+"files."
+msgstr ""
+
+#: ../../scenarios/speed.rst:166
+msgid "What's the difference in speed? Let's try it!"
+msgstr ""
+
+#: ../../scenarios/speed.rst:190
+msgid "These lines both need a remark:"
+msgstr ""
+
+#: ../../scenarios/speed.rst:198
+msgid ""
+"The `pyximport` module allows you to import :file:`*.pyx` files (e.g., "
+":file:`primesCy.pyx`) with the Cython-compiled version of the `primes` "
+"function. The `pyximport.install()` command allows the Python interpreter"
+" to start the Cython compiler directly to generate C code, which is "
+"automatically compiled to a :file:`*.so` C library. Cython is then able "
+"to import this library for you in your Python code, easily and "
+"efficiently. With the `time.time()` function you are able to compare the "
+"time between these 2 different calls to find 500 prime numbers. On a "
+"standard notebook (dual core AMD E-450 1.6 GHz), the measured values are:"
+msgstr ""
+
+#: ../../scenarios/speed.rst:215
+msgid ""
+"And here is the output of an embedded `ARM beaglebone "
+"`_ machine:"
+msgstr ""
+
+#: ../../scenarios/speed.rst:225
+msgid "Pyrex"
+msgstr ""
+
+#: ../../scenarios/speed.rst:229
+msgid "Shedskin?"
+msgstr ""
+
+#: ../../scenarios/speed.rst:234
+msgid "Concurrency"
+msgstr ""
+
+#: ../../scenarios/speed.rst:238
+msgid "Concurrent.futures"
+msgstr ""
+
+#: ../../scenarios/speed.rst:240
+msgid ""
+"The `concurrent.futures`_ module is a module in the standard library that"
+" provides a \"high-level interface for asynchronously executing "
+"callables\". It abstracts away a lot of the more complicated details "
+"about using multiple threads or processes for concurrency, and allows the"
+" user to focus on accomplishing the task at hand."
+msgstr ""
+
+#: ../../scenarios/speed.rst:246
+msgid ""
+"The `concurrent.futures`_ module exposes two main classes, the "
+"`ThreadPoolExecutor` and the `ProcessPoolExecutor`. The "
+"ThreadPoolExecutor will create a pool of worker threads that a user can "
+"submit jobs to. These jobs will then be executed in another thread when "
+"the next worker thread becomes available."
+msgstr ""
+
+#: ../../scenarios/speed.rst:252
+msgid ""
+"The ProcessPoolExecutor works in the same way, except instead of using "
+"multiple threads for its workers, it will use multiple processes. This "
+"makes it possible to side-step the GIL; however, because of the way "
+"things are passed to worker processes, only picklable objects can be "
+"executed and returned."
+msgstr ""
+
+#: ../../scenarios/speed.rst:257
+msgid ""
+"Because of the way the GIL works, a good rule of thumb is to use a "
+"ThreadPoolExecutor when the task being executed involves a lot of "
+"blocking (i.e. making requests over the network) and to use a "
+"ProcessPoolExecutor executor when the task is computationally expensive."
+msgstr ""
+
+#: ../../scenarios/speed.rst:262
+msgid ""
+"There are two main ways of executing things in parallel using the two "
+"Executors. One way is with the `map(func, iterables)` method. This works "
+"almost exactly like the builtin `map()` function, except it will execute "
+"everything in parallel."
+msgstr ""
+
+#: ../../scenarios/speed.rst:284
+msgid ""
+"For even more control, the `submit(func, *args, **kwargs)` method will "
+"schedule a callable to be executed ( as `func(*args, **kwargs)`) and "
+"returns a `Future`_ object that represents the execution of the callable."
+msgstr ""
+
+#: ../../scenarios/speed.rst:288
+msgid ""
+"The Future object provides various methods that can be used to check on "
+"the progress of the scheduled callable. These include:"
+msgstr ""
+
+#: ../../scenarios/speed.rst:291
+msgid "cancel()"
+msgstr ""
+
+#: ../../scenarios/speed.rst:292
+msgid "Attempt to cancel the call."
+msgstr ""
+
+#: ../../scenarios/speed.rst:293
+msgid "cancelled()"
+msgstr ""
+
+#: ../../scenarios/speed.rst:294
+msgid "Return True if the call was successfully cancelled."
+msgstr ""
+
+#: ../../scenarios/speed.rst:296
+msgid "running()"
+msgstr ""
+
+#: ../../scenarios/speed.rst:296
+msgid ""
+"Return True if the call is currently being executed and cannot be "
+"cancelled."
+msgstr ""
+
+#: ../../scenarios/speed.rst:298
+msgid "done()"
+msgstr ""
+
+#: ../../scenarios/speed.rst:299
+msgid "Return True if the call was successfully cancelled or finished running."
+msgstr ""
+
+#: ../../scenarios/speed.rst:301
+msgid "result()"
+msgstr ""
+
+#: ../../scenarios/speed.rst:301
+msgid ""
+"Return the value returned by the call. Note that this call will block "
+"until the scheduled callable returns by default."
+msgstr ""
+
+#: ../../scenarios/speed.rst:304
+msgid "exception()"
+msgstr ""
+
+#: ../../scenarios/speed.rst:304
+msgid ""
+"Return the exception raised by the call. If no exception was raised then "
+"this returns None. Note that this will block just like `result()`."
+msgstr ""
+
+#: ../../scenarios/speed.rst:309
+msgid "add_done_callback(fn)"
+msgstr ""
+
+#: ../../scenarios/speed.rst:307
+msgid ""
+"Attach a callback function that will be executed (as `fn(future)`) when "
+"the scheduled callable returns."
+msgstr ""
+
+#: ../../scenarios/speed.rst:348
+msgid ""
+"The `concurrent.futures`_ module contains two helper functions for "
+"working with Futures. The `as_completed(futures)` function returns an "
+"iterator over the list of futures, yielding the futures as they complete."
+msgstr ""
+
+#: ../../scenarios/speed.rst:352
+msgid ""
+"The `wait(futures)` function will simply block until all futures in the "
+"list of futures provided have completed."
+msgstr ""
+
+#: ../../scenarios/speed.rst:355
+msgid ""
+"For more information, on using the `concurrent.futures`_ module, consult "
+"the official documentation."
+msgstr ""
+
+#: ../../scenarios/speed.rst:359
+msgid "threading"
+msgstr ""
+
+#: ../../scenarios/speed.rst:361
+msgid ""
+"The standard library comes with a `threading`_ module that allows a user "
+"to work with multiple threads manually."
+msgstr ""
+
+#: ../../scenarios/speed.rst:364
+msgid ""
+"Running a function in another thread is as simple as passing a callable "
+"and its arguments to `Thread`'s constructor and then calling `start()`:"
+msgstr ""
+
+#: ../../scenarios/speed.rst:379
+msgid "To wait until the thread has terminated, call `join()`:"
+msgstr ""
+
+#: ../../scenarios/speed.rst:385
+msgid ""
+"After calling `join()`, it is always a good idea to check whether the "
+"thread is still alive (because the join call timed out):"
+msgstr ""
+
+#: ../../scenarios/speed.rst:395
+msgid ""
+"Because multiple threads have access to the same section of memory, "
+"sometimes there might be situations where two or more threads are trying "
+"to write to the same resource at the same time or where the output is "
+"dependent on the sequence or timing of certain events. This is called a "
+"`data race`_ or race condition. When this happens, the output will be "
+"garbled or you may encounter problems which are difficult to debug. A "
+"good example is this `Stack Overflow post`_."
+msgstr ""
+
+#: ../../scenarios/speed.rst:402
+msgid ""
+"The way this can be avoided is by using a `Lock`_ that each thread needs "
+"to acquire before writing to a shared resource. Locks can be acquired and"
+" released through either the contextmanager protocol (`with` statement), "
+"or by using `acquire()` and `release()` directly. Here is a (rather "
+"contrived) example:"
+msgstr ""
+
+#: ../../scenarios/speed.rst:434
+msgid ""
+"Here, we have a bunch of threads checking for changes on a list of sites "
+"and whenever there are any changes, they attempt to write those changes "
+"to a file by calling `log(changes)`. When `log()` is called, it will wait"
+" to acquire the lock with `with file_lock:`. This ensures that at any one"
+" time, only one thread is writing to the file."
+msgstr ""
+
+#: ../../scenarios/speed.rst:441
+msgid "Spawning Processes"
+msgstr ""
+
+#: ../../scenarios/speed.rst:445
+msgid "Multiprocessing"
+msgstr ""
+
diff --git a/locales/zh_CN/LC_MESSAGES/scenarios/web.po b/locales/zh_CN/LC_MESSAGES/scenarios/web.po
new file mode 100644
index 000000000..7f42afa08
--- /dev/null
+++ b/locales/zh_CN/LC_MESSAGES/scenarios/web.po
@@ -0,0 +1,658 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2011-2021 Kenneth Reitz & Real Python. CC BY-NC-SA
+# 3.0
+# This file is distributed under the same license as the pythonguide
+# package.
+# FIRST AUTHOR , 2021.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pythonguide 0.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-12-04 19:30+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.9.1\n"
+
+#: ../../scenarios/web.rst:4
+msgid "Web Applications & Frameworks"
+msgstr ""
+
+#: ../../scenarios/web.rst:8
+msgid ""
+"As a powerful scripting language adapted to both fast prototyping and "
+"bigger projects, Python is widely used in web application development."
+msgstr ""
+
+#: ../../scenarios/web.rst:15
+msgid "Context"
+msgstr ""
+
+#: ../../scenarios/web.rst:20
+msgid "WSGI"
+msgstr ""
+
+#: ../../scenarios/web.rst:22
+msgid ""
+"The Web Server Gateway Interface (or \"WSGI\" for short) is a standard "
+"interface between web servers and Python web application frameworks. By "
+"standardizing behavior and communication between web servers and Python "
+"web frameworks, WSGI makes it possible to write portable Python web code "
+"that can be deployed in any :ref:`WSGI-compliant web server `. WSGI is documented in :pep:`3333`."
+msgstr ""
+
+#: ../../scenarios/web.rst:32
+msgid "Frameworks"
+msgstr ""
+
+#: ../../scenarios/web.rst:34
+msgid ""
+"Broadly speaking, a web framework consists of a set of libraries and a "
+"main handler within which you can build custom code to implement a web "
+"application (i.e. an interactive web site). Most web frameworks include "
+"patterns and utilities to accomplish at least the following:"
+msgstr ""
+
+#: ../../scenarios/web.rst:41
+msgid "URL Routing"
+msgstr ""
+
+#: ../../scenarios/web.rst:40
+msgid ""
+"Matches an incoming HTTP request to a particular piece of Python code to "
+"be invoked"
+msgstr ""
+
+#: ../../scenarios/web.rst:44
+msgid "Request and Response Objects"
+msgstr ""
+
+#: ../../scenarios/web.rst:44
+msgid "Encapsulates the information received from or sent to a user's browser"
+msgstr ""
+
+#: ../../scenarios/web.rst:48
+msgid "Template Engine"
+msgstr ""
+
+#: ../../scenarios/web.rst:47
+msgid ""
+"Allows for separating Python code implementing an application's logic "
+"from the HTML (or other) output that it produces"
+msgstr ""
+
+#: ../../scenarios/web.rst:53
+msgid "Development Web Server"
+msgstr ""
+
+#: ../../scenarios/web.rst:51
+msgid ""
+"Runs an HTTP server on development machines to enable rapid development; "
+"often automatically reloads server-side code when files are updated"
+msgstr ""
+
+#: ../../scenarios/web.rst:56
+msgid "Django"
+msgstr ""
+
+#: ../../scenarios/web.rst:58
+msgid ""
+"`Django `_ is a \"batteries included\" web"
+" application framework, and is an excellent choice for creating content-"
+"oriented websites. By providing many utilities and patterns out of the "
+"box, Django aims to make it possible to build complex, database-backed "
+"web applications quickly, while encouraging best practices in code "
+"written using it."
+msgstr ""
+
+#: ../../scenarios/web.rst:64
+msgid ""
+"Django has a large and active community, and many pre-built `re-usable "
+"modules