我有一些python项目都依赖于同一个核心项目。我使用sphinx为所有这些设置了文档,以便所有子项目都包含在核心项目中编写的文档+每个子项目自己的文档。
只需将子项目文档目录中的符号链接添加到核心项目文档目录即可完成此操作:
$ 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
文件中的任何更改。
答案 0 :(得分:1)
我认为您的项目结构对于狮身人面像的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
subproject
期望每个core/*
文件的docs/core
个邮件目录文件,现在有。{/ p>
但是,我认为这种解决方案不是一种正确的方式(并且没有正确的方法),但它在我的环境中有效。
程序是:
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