但願在readthedocs上建立支持多語言的文檔,效果相似:
html
經過語言選項,能夠切到到不一樣的語言版本;實現這個目標包含兩個主要步驟:python
- 在本地對文檔進行翻譯
- 在
readthedocs.org
上配置翻譯
本文假設您已經對sphinx
文檔生成工具和readthedocs.org
文檔託管網站有所瞭解,本文主要專一於多語言的配置上。git
在本地對文檔進行翻譯
翻譯以前須要安裝一些軟件包:github
- sphinx: 文檔生成工具
- sphinx_intl: 多語言工具
- recommonmark: sphinx支持markdown的插件
- sphinx_rtd_theme: sphinx的readthedocs主題插件
安裝命令:web
pip install sphinx sphinx_intl recommonmark sphinx_rtd_theme
咱們如今有一個項目了,而且其文檔是英文的,而且英文文檔已經部署到readthedocs網站上了;以deeptables爲例,其.readthedocs.yml
文件內容爲:bash
version: 2 sphinx: configuration: docs/source/conf.py formats: all python: version: 3.6 install: - requirements: docs/requirements.txt
docs/source/conf.py
的內容爲:markdown
import os, sys sys.path.insert(0, os.path.abspath('..')) project = 'DeepTables' copyright = '2020, Zetyun.com' author = 'Zetyun.com' # The full version, including alpha/beta/rc tags release = '0.1.1' extensions = ['recommonmark', 'sphinx.ext.autodoc', 'sphinx.ext.napoleon', 'sphinx.ext.viewcode' # 'sphinx.ext.autodoc', # 'sphinx.ext.mathjax', # 'sphinx.ext.ifconfig', # 'sphinx.ext.viewcode', # 'sphinx.ext.githubpages', ] exclude_patterns = [] #html_theme = 'alabaster' html_theme = 'sphinx_rtd_theme' pygments_style = 'sphinx' templates_path = ['_templates'] source_suffix = ['.rst', '.md'] master_doc = 'index' html_static_path = ['_static'] language = 'en' # ['en', 'zh_CN'] # # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ (master_doc, 'deeptables', 'DeepTables Documentation', [author], 1) ] texinfo_documents = [ (master_doc, 'DeepTables', 'DeepTables Documentation', author, 'DeepTables', 'One line description of project.', 'Miscellaneous'), ]
源碼精簡後的目錄的結構:工具
├── deeptables │ ├── __init__.py ├── docs │ ├── Makefile │ ├── build │ ├── make.bat │ ├── requirements.txt │ └── source │ ├── conf.py │ ├── index.rst ├── examples ├── requirements.txt ├── setup.cfg ├── setup.py └── tests
文檔訪問地址:
http://deeptables.readthedocs.io/
其中docs目錄是其文檔目錄。
開始操做:
網站
- 建立一個新項目
deeptables-docs-zh_CN
,並把原來項目的docs複製過來
➜ mkdir deeptables-docs-zh_CN ➜ cp -r deeptables/docs deeptables-docs-zh_CN ➜ cp deeptables/.readthedocs.yml deeptables-docs-zh_CN
- 配置新項目中的
conf.py
language = 'zh_CN' # 設置新項目的語言與中文 locale_dirs = ['locale/'] # 設置本地化數據目錄
- 而後在source目錄執行命令生成pot文件
➜ cd source ➜ sphinx-build -b gettext . locale 正在運行 Sphinx v3.0.0 正在加載翻譯 [zh_CN]... 完成 建立輸出目錄... 完成 ...
若是報錯找不到項目裏的模塊,能夠把本身的項目加入到PYTHONPATH中:ui
export PYTHONPATH=/path/to/module
正常狀況下會生成locale目錄,裏面有不少pot文件:
➜ tree locale locale ├── deeptables.datasets.pot ├── deeptables.eda.pot ├── deeptables.ensemble.pot ├── deeptables.fe.pot
而後生成咱們須要編輯的po文件:
➜ sphinx-intl update -p locale -l zh_CN Create: locale/zh_CN/LC_MESSAGES/model_config.po Create: locale/zh_CN/LC_MESSAGES/deeptables.preprocessing.po Create: locale/zh_CN/LC_MESSAGES/faq.po
打開index.po文件進行翻譯:
# SOME DESCRIPTIVE TITLE. # Copyright (C) 2020, Zetyun.com # This file is distributed under the same license as the DeepTables package. # FIRST AUTHOR <EMAIL@ADDRESS>, 2020. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: DeepTables \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-13 17:23+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.8.0\n" #: ../index.rst:62 msgid "Quick-Start" msgstr "快速開始"
其中msgid是咱們要翻譯的內容,msgstr是翻譯結果,好比把Quick-Start
翻譯成快速開始
:
#: ../index.rst:62 msgid "Quick-Start" msgstr "快速開始"
其中po,pot,mo文件的關係如圖:
爲了給咱們生成能夠人工編寫的po文件,須要先生成pot文件,pot文件能夠從rst/markdown文件生成。
生成的po文件能夠格式化成mo文件,最終再結合最開始rst/markdown文件生成翻譯後的html。
因此readthedocs進行構建生成html時僅須要rst/md和po文件,其餘的文件咱們能夠經過gitignore忽略上傳。
- 構建中文文檔
在docs目錄執行make html:
➜ make clean ➜ make html 正在運行 Sphinx v3.0.0 正在加載翻譯 [zh_CN]... 完成 建立輸出目錄... 完成 WARNING: html_static_path 指向的 '_static' 不存在 構建 [mo]: 1 個 po 文件的目標文件已過時 寫入輸出... [100%] locale/zh_CN/LC_MESSAGES/index.mo ... 複製靜態文件... ... 完成 copying extra files... 完成 dumping search index in Chinese (code: zh)... 完成 dumping object inventory... 完成 build 成功, 111 warnings
而後咱們在生成的html目錄查看啓動web服務查看效果:
(deeptables) ➜ docs cd build/html (deeptables) ➜ html python3 -m http.server 8000
訪問http://localhost:8000/quick_start.html查看效果。
以上步驟能夠參考sphinx官方文檔:
http://www.sphinx-doc.org/en/master/usage/advanced/intl.html
- 將
deeptables-docs-zh_CN
放到git中維護,方便後面發佈到rtd網站上。
在readthedocs.org
上配置翻譯
通過上一章的配置,咱們應該擁有兩個不一樣語言的項目文檔,接着咱們把這兩個文檔整合到一個域名上。
readthedocs.org
支持多語言的方法是配置多個項目。
須要先在rtd在建立一個項目deeptables-docs-zh_CN
,rtd的項目列表以下:
而後配置新項目的的語言爲中文:
其git地址等其餘信息請妥善配置。
此處請注意,在conf.py中配置lnguage=zh_CN
沒有用的,須要在頁面上進行配置。接着能夠構建一下項目,驗證文檔是不是中文的了:
ttps://deeptables.readthedocs.io/zh_CN/latest/
如圖:
接着就能夠配置咱們的主文檔項目關聯這個翻譯文檔了。
在主文檔deeptables項目的設置中找到翻譯選項,而後把項目加入deeptables-docs-zh_CN
:
最後返回主文檔https://deeptables.readthedocs.io/zh_CN/latest/就能夠選擇語言了。