From d754b53ae22784189da5b72ee7b729bad4aaf08e Mon Sep 17 00:00:00 2001 From: krzychb Date: Fri, 16 Mar 2018 02:28:58 +0800 Subject: [PATCH 1/3] Implemented docutils custom role that renders a link to current documentation page on Read The Docs in another language version Provided documentation of the role. --- docs/en/contribute/documenting-code.rst | 14 ++++++++++++ docs/link-roles.py | 30 +++++++++++++++++++++++-- 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/docs/en/contribute/documenting-code.rst b/docs/en/contribute/documenting-code.rst index 37f71deeb4..80cbe1cf77 100644 --- a/docs/en/contribute/documenting-code.rst +++ b/docs/en/contribute/documenting-code.rst @@ -165,6 +165,20 @@ How it renders: A check is added to the CI build script, which searches RST files for presence of hard-coded links (identified by tree/master, blob/master, or raw/master part of the URL). This check can be run manually: ``cd docs`` and then ``make gh-linkcheck``. + +Linking Language Versions +------------------------- + +Switching between documentation in different languages may be done using ``:link_to_translation:`` custom role. The role placed on a page of documentation provides a link to the same page in a language specified as a parameter. Examples below show how to enter links to Chinese and English versions of documentation:: + + :link_to_translation:`zh_CN:中文版` + :link_to_translation:`en:English` + +The language is specified using standard abbreviations like ``en`` or ``zh_CN``. The text after last semicolon is not standardized and may be entered depending on the context where the link is placed, e.g.:: + + :link_to_translation:`en:see description in English` + + .. _add-illustrations: Add Illustrations diff --git a/docs/link-roles.py b/docs/link-roles.py index 7bfe353921..9760f49502 100644 --- a/docs/link-roles.py +++ b/docs/link-roles.py @@ -1,6 +1,7 @@ # based on http://protips.readthedocs.io/link-roles.html import re +import os from docutils import nodes from local_util import run_cmd_get_output @@ -13,10 +14,11 @@ def get_github_rev(): path = tag return path - def setup(app): - baseurl = 'https://github.com/espressif/esp-idf' rev = get_github_rev() + + # links to files or folders on the GitHub + baseurl = 'https://github.com/espressif/esp-idf' app.add_role('idf', autolink('{}/tree/{}/%s'.format(baseurl, rev))) app.add_role('idf_file', autolink('{}/blob/{}/%s'.format(baseurl, rev))) app.add_role('idf_raw', autolink('{}/raw/{}/%s'.format(baseurl, rev))) @@ -27,6 +29,19 @@ def setup(app): app.add_role('example_file', autolink('{}/blob/{}/examples/%s'.format(baseurl, rev))) app.add_role('example_raw', autolink('{}/raw/{}/examples/%s'.format(baseurl, rev))) + # link to the current documentation file in specific language version + on_rtd = os.environ.get('READTHEDOCS', None) == 'True' + if on_rtd: + # provide RTD specific commit identification to be included in the link + tag_rev = 'latest' + if (run_cmd_get_output('git rev-parse --short HEAD') != rev): + tag_rev = rev + else: + # if not on the RTD then provide generic identification + tag_rev = run_cmd_get_output('git describe --always') + + app.add_role('link_to_translation', crosslink('%s../../%s/{}/%s.html'.format(tag_rev))) + def autolink(pattern): def role(name, rawtext, text, lineno, inliner, options={}, content=[]): m = re.search('(.*)\s*<(.*)>', text) @@ -40,3 +55,14 @@ def autolink(pattern): node = nodes.reference(rawtext, link_text, refuri=url, **options) return [node], [] return role + +def crosslink(pattern): + def role(name, rawtext, text, lineno, inliner, options={}, content=[]): + (language, link_text) = text.split(':') + docname = inliner.document.settings.env.docname + doc_path = inliner.document.settings.env.doc2path(docname, None, None) + return_path = '../' * doc_path.count('/') + url = pattern % (return_path, language, docname) + node = nodes.reference(rawtext, link_text, refuri=url, **options) + return [node], [] + return role From 2852dd37fb833a86697461c45200bc5f81456967 Mon Sep 17 00:00:00 2001 From: "Michael (Xiao Xufeng)" Date: Wed, 14 Mar 2018 17:03:56 +0800 Subject: [PATCH 2/3] docs: add language link to easily change to Chinese version --- docs/_static/choose_version.png | Bin 0 -> 22448 bytes docs/en/index.rst | 4 ++++ docs/en/languages.rst | 19 +++++++++++++++++++ docs/zh_CN/index.rst | 5 +++++ docs/zh_CN/languages.rst | 1 + 5 files changed, 29 insertions(+) create mode 100644 docs/_static/choose_version.png create mode 100644 docs/en/languages.rst create mode 100644 docs/zh_CN/languages.rst diff --git a/docs/_static/choose_version.png b/docs/_static/choose_version.png new file mode 100644 index 0000000000000000000000000000000000000000..c8927df118dddf510599750fe1da789bb6a48888 GIT binary patch literal 22448 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 Xj=j0TcAJ5Lfx*+&&t;ucLK6c3NqwRE literal 0 HcmV?d00001 diff --git a/docs/en/index.rst b/docs/en/index.rst index 681d526d46..80079de3db 100644 --- a/docs/en/index.rst +++ b/docs/en/index.rst @@ -1,8 +1,11 @@ ESP-IDF Programming Guide ========================= +:link_to_translation:`zh_CN:[中文]` This is the documentation for Espressif IoT Development Framework (`esp-idf `_). ESP-IDF is the official development framework for the `ESP32 `_ chip. +The documentation has different language versions (:link_to_translation:`en:English`, :link_to_translation:`zh_CN:中文版`, :doc:`How to switch between languages? `). However, please refer to the English version if there is any discrepancy. + ================== ================== ================== |Get Started|_ |API Reference|_ |H/W Reference|_ ------------------ ------------------ ------------------ @@ -44,5 +47,6 @@ This is the documentation for Espressif IoT Development Framework (`esp-idf Copyrights About + [语言/Languages] * :ref:`genindex` diff --git a/docs/en/languages.rst b/docs/en/languages.rst new file mode 100644 index 0000000000..b50c8c9b1d --- /dev/null +++ b/docs/en/languages.rst @@ -0,0 +1,19 @@ +Switch Between Languages/切换语言 +================================= + +The documentation now has two language versions, however, please refer to the English version if there is any discrepancy. + +本文档现在有两种语言的版本,如有出入请以英文版本为准。 + +- English/英文 +- Chinese/中文 + +You can easily changed from one language to another by the panel on the sidebar like below. Just click on the **Read +the Docs** title button on the left-bottom conner if it is folded. + +如下图所示,你可使用边栏的面板进行语言的切换。如果该面板被折叠,点击左下角 **Read the Docs** 标题按钮来显示它。 + +.. image:: /../_static/choose_version.png + + + diff --git a/docs/zh_CN/index.rst b/docs/zh_CN/index.rst index 4b773da8ad..9945da9bc5 100644 --- a/docs/zh_CN/index.rst +++ b/docs/zh_CN/index.rst @@ -1,8 +1,11 @@ ESP-IDF 编程指南 ========================= +:link_to_translation:`en:[English]` 这是乐鑫 IoT 开发开发框架 (`esp-idf `_) 的文档. ESP-IDF 是 `ESP32 `_ 芯片的官方开发框架. +本文档提供不同语言的翻译版本 (:link_to_translation:`en:English`, :link_to_translation:`zh_CN:中文版`, :doc:`如何切换语言? `), 如有出入请以英文版本为准。 + ================== ================== ================== |快速入门|_ |API 参考|_ |H/W 参考|_ ------------------ ------------------ ------------------ @@ -44,5 +47,7 @@ ESP-IDF 编程指南 相关资源 版权 关于 + [Languages/语言] + * :ref:`genindex` diff --git a/docs/zh_CN/languages.rst b/docs/zh_CN/languages.rst new file mode 100644 index 0000000000..50879c5f79 --- /dev/null +++ b/docs/zh_CN/languages.rst @@ -0,0 +1 @@ +.. include:: ../en/languages.rst From d4deb9319a93329eeef2f3342e48ff3e87a6892e Mon Sep 17 00:00:00 2001 From: michael Date: Fri, 27 Apr 2018 14:46:13 +0800 Subject: [PATCH 3/3] doc(global): build cross-language links for translated documents --- docs/en/get-started/add-idf_path-to-profile.rst | 1 + docs/en/get-started/eclipse-setup-windows.rst | 1 + docs/en/get-started/eclipse-setup.rst | 1 + docs/en/get-started/establish-serial-connection.rst | 1 + docs/en/get-started/get-started-pico-kit.rst | 1 + docs/en/get-started/idf-monitor.rst | 1 + docs/en/get-started/index.rst | 1 + docs/en/get-started/linux-setup.rst | 1 + docs/en/get-started/macos-setup.rst | 1 + docs/en/get-started/make-project.rst | 1 + docs/en/get-started/windows-setup.rst | 1 + docs/zh_CN/get-started/add-idf_path-to-profile.rst | 3 ++- docs/zh_CN/get-started/eclipse-setup-windows.rst | 3 ++- docs/zh_CN/get-started/eclipse-setup.rst | 1 + docs/zh_CN/get-started/establish-serial-connection.rst | 1 + docs/zh_CN/get-started/get-started-pico-kit.rst | 3 ++- docs/zh_CN/get-started/idf-monitor.rst | 1 + docs/zh_CN/get-started/index.rst | 1 + docs/zh_CN/get-started/linux-setup.rst | 1 + docs/zh_CN/get-started/macos-setup.rst | 1 + docs/zh_CN/get-started/make-project.rst | 1 + docs/zh_CN/get-started/windows-setup.rst | 1 + 22 files changed, 25 insertions(+), 3 deletions(-) diff --git a/docs/en/get-started/add-idf_path-to-profile.rst b/docs/en/get-started/add-idf_path-to-profile.rst index 60ca434814..8ce9a9ae6f 100644 --- a/docs/en/get-started/add-idf_path-to-profile.rst +++ b/docs/en/get-started/add-idf_path-to-profile.rst @@ -1,5 +1,6 @@ Add IDF_PATH to User Profile ============================ +:link_to_translation:`zh_CN:[中文]` To preserve setting of ``IDF_PATH`` environment variable between system restarts, add it to the user profile, following instructions below. diff --git a/docs/en/get-started/eclipse-setup-windows.rst b/docs/en/get-started/eclipse-setup-windows.rst index a924d2dc7a..2728eb2970 100644 --- a/docs/en/get-started/eclipse-setup-windows.rst +++ b/docs/en/get-started/eclipse-setup-windows.rst @@ -1,6 +1,7 @@ ********************** Eclipse IDE on Windows ********************** +:link_to_translation:`zh_CN:[中文]` Configuring Eclipse on Windows requires some different steps. The full configuration steps for Windows are shown below. diff --git a/docs/en/get-started/eclipse-setup.rst b/docs/en/get-started/eclipse-setup.rst index 9ceb3c7791..7d17d6c159 100644 --- a/docs/en/get-started/eclipse-setup.rst +++ b/docs/en/get-started/eclipse-setup.rst @@ -1,6 +1,7 @@ ******************************** Build and Flash with Eclipse IDE ******************************** +:link_to_translation:`zh_CN:[中文]` .. _eclipse-install-steps: diff --git a/docs/en/get-started/establish-serial-connection.rst b/docs/en/get-started/establish-serial-connection.rst index d4c0943a44..e54345d831 100644 --- a/docs/en/get-started/establish-serial-connection.rst +++ b/docs/en/get-started/establish-serial-connection.rst @@ -1,5 +1,6 @@ Establish Serial Connection with ESP32 ====================================== +:link_to_translation:`zh_CN:[中文]` This section provides guidance how to establish serial connection between ESP32 and PC. diff --git a/docs/en/get-started/get-started-pico-kit.rst b/docs/en/get-started/get-started-pico-kit.rst index 831de1ac14..12ff80aed4 100644 --- a/docs/en/get-started/get-started-pico-kit.rst +++ b/docs/en/get-started/get-started-pico-kit.rst @@ -1,5 +1,6 @@ ESP32-PICO-KIT V4 Getting Started Guide ======================================= +:link_to_translation:`zh_CN:[中文]` This user guide shows how to get started with the ESP32-PICO-KIT V4 mini development board. For description of other versions of the ESP32-PICO-KIT check :doc:`../hw-reference/index`. diff --git a/docs/en/get-started/idf-monitor.rst b/docs/en/get-started/idf-monitor.rst index cf1deec354..09291a3d3f 100644 --- a/docs/en/get-started/idf-monitor.rst +++ b/docs/en/get-started/idf-monitor.rst @@ -1,6 +1,7 @@ *********** IDF Monitor *********** +:link_to_translation:`zh_CN:[中文]` The IDF Monitor tool is a Python program which runs when the ``make monitor`` target is invoked in IDF. diff --git a/docs/en/get-started/index.rst b/docs/en/get-started/index.rst index 9a2d3779ca..9e33e63496 100644 --- a/docs/en/get-started/index.rst +++ b/docs/en/get-started/index.rst @@ -1,6 +1,7 @@ *********** Get Started *********** +:link_to_translation:`zh_CN:[中文]` This document is intended to help users set up the software environment for development of applications using hardware based on the Espressif ESP32. Through a simple example we would like to illustrate how to use ESP-IDF (Espressif IoT Development Framework), including the menu based configuration, compiling the ESP-IDF and firmware download to ESP32 boards. diff --git a/docs/en/get-started/linux-setup.rst b/docs/en/get-started/linux-setup.rst index 8004c37ee7..bc4102a856 100644 --- a/docs/en/get-started/linux-setup.rst +++ b/docs/en/get-started/linux-setup.rst @@ -1,6 +1,7 @@ ************************************* Standard Setup of Toolchain for Linux ************************************* +:link_to_translation:`zh_CN:[中文]` Install Prerequisites diff --git a/docs/en/get-started/macos-setup.rst b/docs/en/get-started/macos-setup.rst index 14764601b5..16123cb03a 100644 --- a/docs/en/get-started/macos-setup.rst +++ b/docs/en/get-started/macos-setup.rst @@ -1,6 +1,7 @@ ************************************** Standard Setup of Toolchain for Mac OS ************************************** +:link_to_translation:`zh_CN:[中文]` Install Prerequisites ===================== diff --git a/docs/en/get-started/make-project.rst b/docs/en/get-started/make-project.rst index d85b2a91c0..956b097d04 100644 --- a/docs/en/get-started/make-project.rst +++ b/docs/en/get-started/make-project.rst @@ -1,5 +1,6 @@ Build and Flash with Make ========================= +:link_to_translation:`zh_CN:[中文]` Finding a project diff --git a/docs/en/get-started/windows-setup.rst b/docs/en/get-started/windows-setup.rst index e2adebde29..9b143920b9 100644 --- a/docs/en/get-started/windows-setup.rst +++ b/docs/en/get-started/windows-setup.rst @@ -1,6 +1,7 @@ *************************************** Standard Setup of Toolchain for Windows *************************************** +:link_to_translation:`zh_CN:[中文]` Introduction ============ diff --git a/docs/zh_CN/get-started/add-idf_path-to-profile.rst b/docs/zh_CN/get-started/add-idf_path-to-profile.rst index 1af406efda..61e8d3dbb0 100644 --- a/docs/zh_CN/get-started/add-idf_path-to-profile.rst +++ b/docs/zh_CN/get-started/add-idf_path-to-profile.rst @@ -1,5 +1,6 @@ 在用户配置文件中添加 IDF_PATH ============================== +:link_to_translation:`en:[English]` 为了在系统多次重新启动时保留 “IDF_PATH” 环境变量的设置,请按照以下说明将其添加到用户配置文件中。 @@ -60,4 +61,4 @@ Linux and MacOS export IDF_PATH=~/esp/esp-idf -如果您从 :ref:`get-started-setup-path` 小节跳转到了这里,在安装用于 ESP32 开发的软件时,返回到 :ref:`get-started-start-project` 小节。 \ No newline at end of file +如果您从 :ref:`get-started-setup-path` 小节跳转到了这里,在安装用于 ESP32 开发的软件时,返回到 :ref:`get-started-start-project` 小节。 diff --git a/docs/zh_CN/get-started/eclipse-setup-windows.rst b/docs/zh_CN/get-started/eclipse-setup-windows.rst index ba15bc9dba..4047dc939e 100644 --- a/docs/zh_CN/get-started/eclipse-setup-windows.rst +++ b/docs/zh_CN/get-started/eclipse-setup-windows.rst @@ -1,6 +1,7 @@ ***************************************************** Eclipse IDE 的创建和烧录指南(Windows 平台) ***************************************************** +:link_to_translation:`en:[English]` Windows 平台上的 Eclipse 配置略有不同,具体步骤请见下文。 @@ -78,4 +79,4 @@ Windows 平台的 Eclipse 介绍到此结束,下方将主要将介绍一些关 * 首先,xtensa-esp32-elf-gcc 交叉编译器 *并非* Cygwin 工具链,但我们会在 Eclipse 中指定其为 Cygwin 工具链。主要原因在于:msys2 需要使用 Cygwin,并支持 Unix 风格的路径,即 ``/c/blah``,而非 ``c:/blah`` 或 ``c:\\blah``。特别需要说明的是,``xtensa-esp32-elf-gcc`` 会“告知” Eclipse 的 ``built-in compiler settings`` 功能,其内置 “include” 目录全部位于 ``/usr/`` 路径下,这也是 Eclipse 唯一可以解析的 ``Unix/Cygwin`` 风格路径。通过在 Eclipse 中指定 ``xtensa-esp32-elf-gcc`` 交叉编译器为 Cygwin 编译器,可以让 Eclipse 使用 cygpath 实用程序直接内部解析路径。 -* 在解析 ESP-IDF 的 make 结果时也经常会出现同样的问题。Eclipse 可以解析 make 的结果,查找头文件目录,但是无法脱离 ``cygpath``,直接解析类似 ``/c/blah`` 的目录。``Eclipse Build Output Parser`` 将利用该机制确认是否调用 ``cygpath``,但由于未知原因,目前 ESP-IDF 配置并不会触发该功能。出于这个原因,我们会使用 ``eclipse_make.py`` 包装脚本调用 ``make``,然后使用 ``cygpath`` 处理 Eclipse 的结果。 \ No newline at end of file +* 在解析 ESP-IDF 的 make 结果时也经常会出现同样的问题。Eclipse 可以解析 make 的结果,查找头文件目录,但是无法脱离 ``cygpath``,直接解析类似 ``/c/blah`` 的目录。``Eclipse Build Output Parser`` 将利用该机制确认是否调用 ``cygpath``,但由于未知原因,目前 ESP-IDF 配置并不会触发该功能。出于这个原因,我们会使用 ``eclipse_make.py`` 包装脚本调用 ``make``,然后使用 ``cygpath`` 处理 Eclipse 的结果。 diff --git a/docs/zh_CN/get-started/eclipse-setup.rst b/docs/zh_CN/get-started/eclipse-setup.rst index 8db8639428..e2f7be8a3c 100644 --- a/docs/zh_CN/get-started/eclipse-setup.rst +++ b/docs/zh_CN/get-started/eclipse-setup.rst @@ -1,6 +1,7 @@ **************************** Eclipse IDE 的创建和烧录指南 **************************** +:link_to_translation:`en:[English]` .. _eclipse-install-steps: diff --git a/docs/zh_CN/get-started/establish-serial-connection.rst b/docs/zh_CN/get-started/establish-serial-connection.rst index 38c05344c6..f934dba3d8 100644 --- a/docs/zh_CN/get-started/establish-serial-connection.rst +++ b/docs/zh_CN/get-started/establish-serial-connection.rst @@ -1,5 +1,6 @@ 与 ESP32 创建串口连接 ========================= +:link_to_translation:`en:[English]` 本章节介绍如何在 ESP32 和 PC 之间建立串口连接。 diff --git a/docs/zh_CN/get-started/get-started-pico-kit.rst b/docs/zh_CN/get-started/get-started-pico-kit.rst index d2e44c905b..4ffa78dbc7 100644 --- a/docs/zh_CN/get-started/get-started-pico-kit.rst +++ b/docs/zh_CN/get-started/get-started-pico-kit.rst @@ -1,5 +1,6 @@ ESP32-PICO-KIT V4 入门指南 ============================ +:link_to_translation:`en:[English]` 本指南介绍了如何开始使用 ESP32-PICO-KIT V4 迷你开发板。有关 ESP32-PICO-KIT 其他版本的介绍,请见 :doc:`../hw-reference/index`。 @@ -216,4 +217,4 @@ Header J3 .. toctree:: :hidden: - get-started-pico-kit-v3 \ No newline at end of file + get-started-pico-kit-v3 diff --git a/docs/zh_CN/get-started/idf-monitor.rst b/docs/zh_CN/get-started/idf-monitor.rst index 5e19ff1587..a5b30e2d0a 100644 --- a/docs/zh_CN/get-started/idf-monitor.rst +++ b/docs/zh_CN/get-started/idf-monitor.rst @@ -1,6 +1,7 @@ *********** IDF Monitor *********** +:link_to_translation:`en:[English]` IDF Monitor 工具是在 IDF 中调用 “make monitor” 目标时运行的 Python 程序。 diff --git a/docs/zh_CN/get-started/index.rst b/docs/zh_CN/get-started/index.rst index e2eb3d2eaa..8831d86fd1 100644 --- a/docs/zh_CN/get-started/index.rst +++ b/docs/zh_CN/get-started/index.rst @@ -1,6 +1,7 @@ *********** 快速入门 *********** +:link_to_translation:`en:[English]` 本文档旨在指导用户创建 ESP32 的软件环境。本文将通过一个简单的例子来说明如何使用 ESP-IDF (Espressif IoT Development Framework),包括配置、编译、下载固件到开发板等步骤。 diff --git a/docs/zh_CN/get-started/linux-setup.rst b/docs/zh_CN/get-started/linux-setup.rst index a4dc1d943c..8c5c0cf6ba 100644 --- a/docs/zh_CN/get-started/linux-setup.rst +++ b/docs/zh_CN/get-started/linux-setup.rst @@ -1,6 +1,7 @@ ***************************** Linux 平台工具链的标准设置 ***************************** +:link_to_translation:`en:[English]` 安装前提 ===================== diff --git a/docs/zh_CN/get-started/macos-setup.rst b/docs/zh_CN/get-started/macos-setup.rst index ea5b6c60d3..18c325303b 100644 --- a/docs/zh_CN/get-started/macos-setup.rst +++ b/docs/zh_CN/get-started/macos-setup.rst @@ -1,6 +1,7 @@ ************************************** 在 Mac OS 上安装 ESP32 工具链 ************************************** +:link_to_translation:`en:[English]` 安装准备 ================ diff --git a/docs/zh_CN/get-started/make-project.rst b/docs/zh_CN/get-started/make-project.rst index 6c03bab974..6456d8ef09 100644 --- a/docs/zh_CN/get-started/make-project.rst +++ b/docs/zh_CN/get-started/make-project.rst @@ -1,5 +1,6 @@ 通过 make 指令创建和烧录项目 ============================= +:link_to_translation:`en:[English]` 寻找项目 diff --git a/docs/zh_CN/get-started/windows-setup.rst b/docs/zh_CN/get-started/windows-setup.rst index d83408e3c0..8482b5d9cd 100644 --- a/docs/zh_CN/get-started/windows-setup.rst +++ b/docs/zh_CN/get-started/windows-setup.rst @@ -1,6 +1,7 @@ *************************************** Windows 平台工具链的标准设置 *************************************** +:link_to_translation:`en:[English]` 引言 ============