多项目 sphinx 设置的国际化

标签 internationalization documentation python-sphinx

我有几个 python 项目都依赖于同一个核心项目。我已经使用 sphinx 为所有这些设置了文档,以便所有子项目都包含在核心项目中编写的文档+每个子项目自己的文档。

这是通过简单地从子项目的文档目录添加一个符号链接(symbolic link)到核心项目文档目录来完成的:

$ cd /path/to/subproject/a/docs
$ ln -s /path/to/coreproject/docs core
$ make html

只要我只用一种语言编写文档,这就会很好用。现在我正在尝试使用 sphinx-intl 用多种语言编写相同的文档。我应该如何配置这个?

我试过设置locale_dirs = ['locale/', 'core/locale/']然后从我的子项目中运行以下命令:
$ make gettext
$ sphinx-intl update -p _build/gettext -l sv
$ make -e SPHINXOPTS="-D language='sv'" html

但它似乎没有在 .po 中找到我的任何更改位于核心项目中的文件。

最佳答案

我认为您的项目结构不适用于 sphinx 的 i18n,因为:

  • /path/to/subproject/a/docs需要像这样的语言环境文件:index.pocore.po .
  • /path/to/subproject/a/docs/core/locale提供index.po而不是 core.po

  • 我认为如果您将其设置如下,您可以获得预期的行为:
  • 设置 gettext_compact = True致所有conf.py .
  • 符号链接(symbolic link)如下:
    $ cd /path/to/subproject/a/docs/locale/sv/LC_MESSAGES/
    $ ls
    core  index.po
    $ rm -R core
    $ ln -s /path/to/coreproject/docs/locale/ja/LC_MESSAGES core
    
  • subproject期待 core/*每个 docs/core 的消息目录文件文件,现在有。

    但是,我认为这种解决方案不是正确的方法(也不是正确的方法),但它在我的环境中有效。

    程序是:
    mkdir -p docs/coreproject
    cd docs/coreproject
    sphinx-quickstart -q -p 1 -v 1 -a 1 docs
    cd ..  # go to docs
    mkdir -p subproject/a
    cd subproject/a
    sphinx-quickstart -q -p 2 -v 2 -a 2 docs
    cd docs/
    ln -s ../../../coreproject/docs core
    mkdir locale
    cd ../../../coreproject/docs
    mkdir locale
    make gettext
    sphinx-intl -p _build/gettext -l sv
    sphinx-intl update -p _build/gettext -l sv
    vi locale/sv/LC_MESSAGES/index.po   # modify po
    make html SPHINXOPTS="-D language=sv"
    # confirm 'core' _build/html/index.html 
    cd ../subproject/a/docs/
    make gettext
    sphinx-intl update -p _build/gettext -l sv
    cd locale/sv/LC_MESSAGES/
    ls
    rm -R core
    ln -s ../../../../../../coreproject/docs/locale/sv/LC_MESSAGES core
    vi index.po   # another modify
    cd ../../..
    make html SPHINXOPTS="-D language=sv"
    # confirm 'sub' _build/html/index.html
    

    项目文件:https://www.dropbox.com/s/cd65jt4h0x31cse/sphinx-intl-issue-20-docs.tar.gz?dl=0

    关于多项目 sphinx 设置的国际化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48440506/

    相关文章:

    c# - 在 C#/WinForms 中制作多语言应用程序的最佳实践?

    javascript - VueJs 和 vue-i18n 错误

    python - 如何使用带 Sphinx 的自动模块删除静态类变量?

    makefile - 在使用 Makefile 调用 Sphinx 时,如何使用 SPHINXOPTS 触发 "only"指令?

    unicode - 网站上的日语分词是否被认为是常态且完全可以接受?

    asp.net - ASP.NET 中的国际化如何工作?

    documentation - COBOL 88 级数据类型

    python - 如何覆盖 Sphinx 插入的英文标签

    c++ - 为什么 Doxygen 将此方法报告为属性?

    ruby-on-rails - 用于文档的 CSS 框架?