使用Sphinx翻译LLVM的中文文档

谷歌C++编码规范中文版:工程实践、工具链集成与团队协作指南 在大型C++工程项目中,编码规范是保障代码可维护性、可读性和团队协作效率的基石。它通过定义统一的代码风格、命名约定和最佳实践,从源头上减少认知负担和潜在缺陷。其技术价值在于将工程哲学转化为可执行的约束,从而提升代码质量与长期演化能力。典型的应用场景包括新项目技术选型、遗留系统重构以及团队新人快速融入。本文聚焦于业界广泛认可的谷歌C++风格指南,探讨如何通过建立其中文镜像仓库,并集成cpplint、clang-format等静态分析工具链,将规范高效落地于日常开发与持续集成流程,解决中文开发者面临的文档分散与 阅读详情

Sphinx是一款非常方便的文档生成工具,以前就早有耳闻,最近计划将LLVM的文档翻译一些,在打开LLVM的文档源文件后发现,整个文档部分整理的非常整洁。下载的最新版LLVM-3.8版的源码,已经完全使用Sphinx生成文档,于是我也学习了一些Sphinx的相关用法。

Sphinx是python编写的一款命令行工具,在python3或python2下都能正常的工作,安装可以使用流行的pip进行安装:

$ pip install sphinx --upgrade
$ pip install sphinx-intl

Sphinx的依赖项比较新,最好还是更新一下比较好。sphinx-intl是一个命令行工具,用来实现多语言翻译的。

Sphinx有着非常独特且方便的代码翻译模型,可以用工具将英语版编写的文档中的文字全部抽取出来,在.po文件下,可以让用户方便地进行修改和翻译。最后根据生成时的语言配置,构建对应语言版本的文档。

sphinx i18n model

不过我们先不管Sphinx是如何进行翻译抽取的,先来看下LLVM文档的构建。

基本HTML文档的构建

默认LLVM的docs目录下的makefile是给doxygen使用的,这里我将Makefile.sphinx改成默认的makefile。这样接下来的命令中,都不会再出现对于原版-f Makefile.sphinx参数了。

首先对于构建html版本,非常简单,直接make默认参数即可,或者make html都可以。

这样,会在_build目录下生成对应的网站文件夹。

这样构建的文档,是可以作为静态网站直接发布出去的,不过发布到github上的gitpages上还是会有点问题,我们这里先不谈,接下来的发布注意中再细说。

抽取文档中的文本并开始翻译

我们的目标是翻译,将英文文档尽可能正确无误地转换为中文文档。这里我们使用sphinx-intl工具进行翻译。

  1. 首先配置conf.py文件
    conf.py是sphinx的配置文件,我们需要为其增加国际化翻译文件夹:
    py
    language = 'zh_CN' # language supported
    locale_dirs = ['locale/'] # path is example but recommended.
    gettext_compact = False # optional.
  2. 抽取需要转换的文本到pot文件列表中
    执行如下指令即可:

    $ make gettext

    这时,会在_build目录出现一个locale文件夹,是抽取出的全部文本段。

  3. 更新对应语言的版本

    $ sphinx-intl update -p _build/locale -l zh_CN
  4. 手动翻译抽取后的文段
    这时,我们将可以在locale目录,注意,是文档项目根目录下的locale,这才是我们要翻译文本的.po文件夹。里面内容大概如下:

    
    #: ../../builders.rst:4
    
    msgid "Available builders"
    msgstr "<一些你要翻译的汉语>"

    msgid和msgstr一对一句,是全部抽取出来的文本的翻译,只要你对应翻译,注意rst文件的格式,翻译出来很少会出问题,样式完全一致,而且链接不会错乱。

  5. 构建新版文档
    由于我们在conf.py下配置了默认的language,所以只要这时再重新make,项目文档就生成成中文版的了。

看下效果

今天一下午研究sphinx+晚上翻译,将LLVM官网首页翻译了个大概,有兴趣的朋友可以看下我发布到gitpages上的中文文档:

http://sunxfancy.github.io/llvm-cn/

另外英语好且正在使用LLVM的朋友,欢迎一同和我来翻译这个项目,给更多人带来便利。

发布项目的小问题

之前我们提到,发布到gitpages出些问题,所有_static等带_前缀的文件夹无法访问,思考了一下,觉得是github本身的问题,在看sphinx文档的时候,发现提到了一个文件,必须同时发布到gitpages上。

.nojekyll,这个空的小文件十分重要,因为它直接关系着github上的解析规则,加上这个空文件,gitpages就会停止默认的过滤规则,运行我们的资源文件的访问。

CARLA中文贡献指南:开源仿真项目的国产化适配实践 CARLA作为基于Unreal Engine与C++/Python混合架构的自动驾驶仿真平台,其贡献流程远超常规代码提交,本质是跨技术栈的生态适配问题。理解其构建依赖链(Ubuntu+gcc+UE SDK三元组)、Conventional Commits等CI强制规范、clang-format与Python Docstring的语义对齐逻辑,是参与开源协作的前提。这类面向复杂C++仿真系统的本地化工程,需兼顾编译器ABI兼容性、Docker国内镜像加速、SSL证书链修复及中文技术表达的准确性,广泛适用于智能 阅读详情

相关推荐

LLVM 程序员手册 —— LLVM 4.0 文档 - 可译网

LLVM 程序员手册 —— LLVM 4.0 文档LLVMLLVMLLVMLLVM

1 LLVM 简介

众所周知编译有以下过程:其中根据源程序生成中间代码的部分,称为编译器前端;根据中间代码生成目标语言的代码的部分称为编译器后端。另外编译器在整个过程中非常重要的功能是符号表管理,记录变量名字、属性相关信息。...............

肥羊也 841

sphinx-intl:Sphinx实用程序,使翻译和应用翻译变得容易

sphinx-intl:Sphinx的翻译支持实用程序 sphinx-intl是一个实用程序工具,提供多种功能,可轻松进行翻译并将翻译应用于生成的文档。 可选:支持Transifex服务以使用进行翻译。 文献资料 执照 根据BSD许可获得许可。 变化 参见: https : //sphinx-intl.readthedocs.io/en/master/changes.html

LLVM 入门教程中文版使用指南

LLVM 入门教程中文版使用指南 项目的目录结构及介绍 LLVM 入门教程中文版的 GitHub 仓库(https://github.com/zy445566/llvm-guide-zh)包含以下主要目录和文件: Chapter01:第一章内容,介绍 LLVM 基础。 Chapter02:第二章内容,深入讲解 LLVM 的 IR(中间表示)。 Chapter03:第三章内容,介绍 LLVM 的工...

gitblog_00303的博客 575

llvm-13.0.1-1.5.7-API文档-中文版.zip

赠送jar包:llvm-13.0.1-1.5.7.jar; 赠送原API文档:llvm-13.0.1-1.5.7-javadoc.jar; 赠送源代码:llvm-13.0.1-1.5.7-sources.jar; 赠送Maven依赖信息文件:llvm-13.0.1-1.5.7.pom; 包含翻译后的API文档:llvm-13.0.1-1.5.7-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.bytedeco:llvm:13.0.1-1.5.7; 标签:bytedeco、llvm、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

llvm-13.0.1-1.5.7-API文档-中英对照版.zip

赠送jar包:llvm-13.0.1-1.5.7.jar; 赠送原API文档:llvm-13.0.1-1.5.7-javadoc.jar; 赠送源代码:llvm-13.0.1-1.5.7-sources.jar; 赠送Maven依赖信息文件:llvm-13.0.1-1.5.7.pom; 包含翻译后的API文档:llvm-13.0.1-1.5.7-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.bytedeco:llvm:13.0.1-1.5.7; 标签:bytedeco、llvm、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

LLVM Language Reference Manual: LLVM语言参考手册

LLVM Language Reference Manual — LLVM 15.0.0git documentationhttps://llvm.org/docs/LangRef.html

RToax 1067

DSP28335 ADC模块实战:从寄存器配置到精准数据采集(附代码详解)

本文详细解析DSP28335的ADC模块配置与数据采集实战,涵盖寄存器设置、采样窗口优化、中断处理及代码实现。重点解决ADC精度问题,如采样窗口不足导致数据偏差,提供完整代码示例和调试技巧,助力工程师实现精准数据采集。

kkk56的博客 865

LLVM教程中文版

LLVM教程中文版 去发现同类优质开源项目:https://gitcode.com/ 项目简介 LLVM是一个开源的编译器基础设施项目,它提供了一整套现代编译器所需的工具和技术。LLVM项目的目标是为开发者提供一套可重用的模块化组件,以便构建高性能的编译器、工具链和其他软件系统。 本项目是LLVM官方文档的中文翻译版,旨在帮助中国开发者更好地理解和使用LLVM。该项目由liancheng维护,并在...

gitblog_00005的博客 655

iOS自动化之打包-xcodebuild命令行打包.app并安装到ios模拟器

xcode xcodebuild xcrun ios模拟器 iOS UI自动化测试 ios自动打包安装到ios模拟器

z12347891的博客 5074

SAP采购信息记录批量维护实战:用BAPI ME_INFORECORD_MAINTAIN搞定价格等级和条件记录

本文深入解析SAP标准BAPI ME_INFORECORD_MAINTAIN在采购信息记录批量维护中的应用,特别聚焦价格等级和条件记录的技术难点。通过实战案例和代码示例,帮助用户高效处理供应商-物料价格数据,提升供应链管理效率。

weixin_42522320的博客 410

LLVM入门笔记

一、LLVM的周边项目: 1.clang、llvm、clang-tools-extra、compiler-rt: clang+LLVM:clang是LLVM的前端,把各种源码编译处理; clang-tools-extra:clang默认以外的认为不是很重要的工具; Compiler-RT 项⽬为硬件不⽀持的低级功能提供特定的⽀持。例如,32位 ⽬标通常缺少⽀持64位除法的指令, Compiler-RT 通过提供特定⽬标的优 化函数来解决此问题,使⽤这样的函数可以在32位指令处理器上实现64位

Augusdi的专栏 1879

Win10 桌面回收站右键没有“清空回收站”选项怎么解决

Win10 桌面回收站右键没有“清空回收站” 选项怎么解决? 我之前不知道怎么捣鼓注册表(胡乱删了一些。。。) 导致想清空回收站的时候,右键却没有“清空回收站”这个选项了 以下是解决方法: 1、在桌面上新建一个txt文本文档,将以下代码拷贝进去: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\empty] "Com...

菜鸟的后花园 2万+

构建llvm的doc文档

我先pip install sphinx --upgrade, 然后pi sphinx-intl, 运行make html报错. source_parsers = {'.md': 'recommonmark.parser.CommonMarkParser'} 将这一句注释掉.构建成功.

个人进步之路 559

【小白深度教程 1.3】使用 BP-Net 深度补全网络,进行 KITTI 稠密点云和图像融合(Depth Completion 实战)

在上一节中,我们展示了如何将从激光雷达获取的稀疏点云(深度)映射到图像。因此这篇论文我们尝试使用 Depth Completion(深度补全)技术,来将稀释的点云深度,补全为稠密深度。

2401_87064292的博客 1199

uniapp [全端兼容] - 实现接入集成高德地图搜索地址及选择位置功能,搜索框检索选择地点并返回经纬度及详细省市区县街道地址,用户搜索历史及清空历史记录,选择地址自动获取周边位置列表/地图移动选点

uni-app,高德地图,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,Uniapp高德地图,在地图上选择或搜索指定地点,打开地图选择位置,关联地址搜索,输入地址返回附近地址列表,uniApp高德地图地址搜索,搜索框历史记录,关键字搜索,周边查询,搜索位置,uniapp对接高德实现搜索出现地址以及保存搜索记录,集成高德地图,实现精准位置选点功能,获取当前定位城市,如何实现搜索功能,获取省份城市区街道详细地址经纬度,移动选点标记位置,在地图上进行选择位置选点、搜索

🏆 前端领域优质创作者 1万+

LLVM学习日记2——Build llvm, clang & Starting Chapters

内存不足 的问题又出现了。然后搜了一下原因,发现自己build的是Debug版本。是因为没有细看文档,默认是build Debug版本的。最后顺利build了一个Release版本,但可能RelWithDebInfo才是最适合的,短时间内估计用不上debug info,就先不考虑这个问题了。 % cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=type SRC_ROOT type: Debug:默认选项,没有优化,有debug info和asserts; Rel

karishima的博客 1212

111. 如何创建 SAP ABAP 锁对象(Lock Object)和加锁以及解锁函数

至此,我们完成了 ABAP 系统锁机制和加锁解锁函数的介绍。有了这些基础知识,大家就能在实际工作中,使用 Lock Object 和加锁解锁函数,编写出支持并发访问控制的 ABAP 应用程序了。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1535

基于RK3568的Kernel初始化到init进程启动:实战

基于正点原子RK3568开发板进行Kernel初始化初始化实战

weixin_43390831的博客 246

第21章—技术管理篇(上):身为技术人该怎样带好团队并做好管理者

上节讲了职业规划和学习提升这两个话题,随着职业规划的不断落地,或者自己能力的不断提升,大家也会逐渐被提拔成“职级更高”的人。企业规模扩张时,员工数量也会变多,意味着Boss需要更多的人来辅助管理,而管理者会从外部招聘吗?也许会,但大多企业更喜欢从内部选拔,毕竟人的天性更希望找的人值得信赖。此时,一些能力不错、做事靠谱的老员工,就会被“赶上”管理者的位子。作管理不难,但想要“”就需要一定情商。

运维老生常谈 1366

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

LLVM 文档收集

另外一种 LLVM PASS API 文档:https://docs.hdoc.io/hdoc/llvm-project/f16681453BDE576FA.html。LLVM PASS 编写 tutorial: https://llvm.org/docs/WritingAnLLVMPass.html。LLVM 编译构建:https://llvm.org/docs/GettingStarted.html。

shimly123456的博客 353

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

LLVM程序员手册——LLVM 4.0 文档

LLVM程序员手册——LLVM 4.0 文档 去发现同类优质开源项目:https://gitcode.com/ 这里是LLVM程序员手册的中文翻译版本,涵盖LLVM 4.0版本的详细文档。本手册旨在帮助开发者深入了解LLVM的架构、设计和使用方法,是学习和使用LLVM的宝贵资料。 手册内容包括但不限于LLVM的核心概念、编译器设计、工具链应用、passes开发等,适用于不同层次的开发者阅读和参考。...

gitblog_06748的博客 343

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

LLVM原子指令与并发指引

原文地址:http://llvm.org/docs/Atomics.html 介绍 LLVM支持在线程与异步信号面前定义良好的指令。 原子指令专门为以下定义来提供可读的IR以及优化的代码生成: ·        C++11 头文件。(C++11草案在此)。(C11草案在此)。 ·        Java风格内存适用的语义,用于volatile以及规范的共享变量(Java规范)。 ·  

wuhui_gdnt的专栏 3401

【亲测免费】 LLVM 入门教程中文版指南

LLVM 是一个开源的编译器基础设施项目,提供了一个模块化和可重用的编译器和工具链技术的集合。LLVM 最初是作为底层虚拟机(Low Level Virtual Machine)的缩写,但现在它已经成为一个品牌,代表了一系列的编译器技术。LLVM 的核心是 LLVM 中间表示(IR),它是一种灵活且强大的表示形式,支持多种语言和多种目标平台。 ## 项目快速启动 ### 环境准备 在开始之前...

gitblog_00343的博客 1440

LLVM IR 文档 专门解释 LLVM IR

https://llvm.org/docs/LangRef.html#phi-instruction

shimly123456的博客 221

LLVM - 用户指南

LLVM用户指南提供了全面的开发文档,主要面向需要操作LLVM中间表示(IR)的用户。内容涵盖构建发行版(CMake、Docker配置)、优化转换(Pass编写、矢量化、调试信息处理)、代码生成(后端开发、TableGen)以及JIT实现(MCJIT、ORC API)等方面。特别提供了针对ARM架构、交叉编译和性能导向构建(PGO)的专项说明,并包含调试JIT代码等实用技术指南。该文档体系适合LLVM开发者、编译器研究人员和新架构移植人员参考使用。

378
上一篇: C++ template 分离式编译
下一篇: SEO优化实录
西风逍遥游
博客等级 码龄14年 221粉丝 101原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值