Osk*_*son 5 documentation internationalization python-sphinx
我有一些python项目都依赖于同一个核心项目.我已经使用sphinx设置了所有这些文档,以便所有子项目都包含在核心项目中编写的文档+每个子项目自己的文档.
只需将子项目的文档目录中的符号链接添加到核心项目文档目录即可完成此操作:
$ cd /path/to/subproject/a/docs
$ ln -s /path/to/coreproject/docs core
$ make html
Run Code Online (Sandbox Code Playgroud)
只要我只用一种语言编写文档,这就行得很好.现在我正试图sphinx-intl用多种语言编写相同的文档.我该如何配置?
我尝试过设置locale_dirs = ['locale/', 'core/locale/']然后从子项目运行以下命令:
$ make gettext
$ sphinx-intl update -p _build/gettext -l sv
$ make -e SPHINXOPTS="-D language='sv'" html
Run Code Online (Sandbox Code Playgroud)
但它似乎没有找到我.po在核心项目中的文件中的任何更改.
我认为你的项目结构不适用于 sphinx 的 i18n,因为:
/path/to/subproject/a/docs 需要像这样的语言环境文件:index.po和core.po./path/to/subproject/a/docs/core/locale提供index.po而不是core.po我认为如果您将其设置如下,您可以获得预期的行为:
gettext_compact = True为全部conf.py。符号链接如下:
$ 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
Run Code Online (Sandbox Code Playgroud)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
Run Code Online (Sandbox Code Playgroud)
项目文件:https://www.dropbox.com/s/cd65jt4h0x31cse/sphinx-intl-issue-20-docs.tar.gz ?dl=0