可以在Sphinx侧边栏中重命名“目录”吗?

9 投票
2 回答
2314 浏览
提问于 2025-04-16 22:15

一般来说,如何更改Sphinx默认元素的名称(比如把 Quick Search 改成 Search)?可以做到吗?

2 个回答

1

根据Sphinx的配置文档,你应该可以修改html模板,或者让Sphinx使用新的模板,这样就能实现你想要的效果,方法就是在模板的html上进行调整。

现在的模板中有搜索标题是在上下文中提供的,不过我不太确定是什么填充了上下文中 _('search') 的值。我在想,你是否可以尝试通过修改位于 /sphinx/sphinx/locale/sphinx.pot 的语言文件来进行自定义:

#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:137
#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:20
msgid "Search"
msgstr ""

然后把 msgstr "My alternative search" 替换掉 msgstr ""

8

下面是如何通过覆盖模板将“快速搜索”改成其他内容的方法:

  1. 在Sphinx项目目录下创建一个名为 templates 的文件夹。

  2. <Sphinx安装目录>/themes/basic/searchbox.html 复制到刚才创建的 templates 文件夹里。

  3. 在conf.py文件中添加

    templates_path = ["templates"]
    
  4. 在复制的 searchbox.html 文件中,把“快速搜索”改成你想要的内容。

不过我不建议这样做。

更灵活的方法是创建一个gettext MO文件,并按照 文档中关于 locale_dirs 的说明进行配置。步骤如下:

  1. 模板文件 <Sphinx安装目录>/locale/sphinx.pot 包含了所有可以翻译的字符串。把这个文件复制到本地,命名为 sphinx.po

  2. sphinx.po 文件中添加你的修改。

  3. 使用 msgfmt.pysphinx.po 编译成 sphinx.mo

  4. sphinx.mo 放到正确的目录中(对于英语来说是 <你的语言目录>/en/LC_MESSAGES)。

更多信息请参见 http://docs.python.org/library/gettext.html#internationalizing-your-programs-and-modules

撰写回答