20130401 (Monday, 01 April 2013)¶
Multilingual user docs using Sphinx’s i18n¶
I worked on djangosite.utils.fablib
to support an optional
internationalized “user manual” per project.
The new aliases
emu, umu, imu and cmu
do for /userdocs
the same as the aliases
em, um, im and cm
do for the Python code.
The project’s fabfile must set env.languages to something like:
env.languages = 'fr nl de'.split()
The new method lino.core.model.Model.subclasses_graph()
generates a graphviz directive which
Upgrade Sphinx from 1.1.3 to 1.2b1¶
Georg Brandl has released a new version of Sphinx and asked to test it. The upgrade itself was smooth:
> pip install -U Sphinx
Downloading/unpacking Sphinx from http://pypi.python.org/packages/source/S/Sphinx/Sphinx-1.2b1.tar.gz#md5=67bea6df63be8e2a76ebedc76d8f71a3
Downloading Sphinx-1.2b1.tar.gz (3.0MB): 3.0MB downloaded
Running setup.py egg_info for package Sphinx
warning: no files found matching 'README'
no previously-included directories found matching 'doc\_build'
Requirement already up-to-date: Pygments>=1.2 in c:\python27\lib\site-packages (from Sphinx)
Requirement already up-to-date: Jinja2>=2.3 in c:\python27\lib\site-packages (from Sphinx)
Requirement already up-to-date: docutils>=0.7 in c:\python27\lib\site-packages (from Sphinx)
Installing collected packages: Sphinx
Found existing installation: Sphinx 1.1.3
Uninstalling Sphinx:
Successfully uninstalled Sphinx
Running setup.py install for Sphinx
warning: no files found matching 'README'
no previously-included directories found matching 'doc\_build'
Installing sphinx-apidoc-script.py script to c:\Python27\Scripts
Installing sphinx-apidoc.exe script to c:\Python27\Scripts
Installing sphinx-build-script.py script to c:\Python27\Scripts
Installing sphinx-build.exe script to c:\Python27\Scripts
Installing sphinx-quickstart-script.py script to c:\Python27\Scripts
Installing sphinx-quickstart.exe script to c:\Python27\Scripts
Installing sphinx-autogen-script.py script to c:\Python27\Scripts
Installing sphinx-autogen.exe script to c:\Python27\Scripts
Successfully installed Sphinx
Cleaning up...
I rebuilt the following sites:
One little problem was because I had been using the fact that a hidden doctree was still visible in the sidebar. On http://www.lino-framework.org/ there is a heading “Suggestions du chef” which was a kind of manually written “best of” toctree. But the sidebar still was meant to show the official toctree. The new version forced me to remove the :hidden: and add a “Sitemap” section there. I think the new version is right, and I’ll remove my “Suggestions du chef” section soon.
ValueError: need more than 1 value to unpack¶
The following problem (which I didn’t yet report to the mailing list) is still not solved in Sphinx 1.2b1:
Traceback (most recent call last):
File "setup.py", line 3, in <module>
setup(**SETUP_INFO)
File "c:\Python27\lib\distutils\core.py", line 152, in setup
dist.run_commands()
File "c:\Python27\lib\distutils\dist.py", line 953, in run_commands
self.run_command(cmd)
File "c:\Python27\lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "c:\Python27\lib\site-packages\babel-1.0dev_r661-py2.7.egg\babel\messages\frontend.py", line 577, in run
template = read_po(infile)
File "c:\Python27\lib\site-packages\babel-1.0dev_r661-py2.7.egg\babel\messages\pofile.py", line 220, in read_po
_add_message()
File "c:\Python27\lib\site-packages\babel-1.0dev_r661-py2.7.egg\babel\messages\pofile.py", line 173, in _add_message
catalog[msgid] = message
File "c:\Python27\lib\site-packages\babel-1.0dev_r661-py2.7.egg\babel\messages\catalog.py", line 617, in __setitem__
self.mime_headers = _parse_header(message.string).items()
File "c:\Python27\lib\site-packages\babel-1.0dev_r661-py2.7.egg\babel\messages\catalog.py", line 372, in _set_mime_headers
value, tzoffset, _ = re.split('([+-]\d{4})$', value, 1)
ValueError: need more than 1 value to unpack
The exception happens in Babel because Sphinx’s gettext builder generates POT-Creation-Date headers without timezone information. The generated .pot files contain:
"POT-Creation-Date: 2013-04-01 07:09\n"
but it should be
"POT-Creation-Date: 2013-04-01 07:09+0300\n"
Workaround for me is to find line 160 of sphinx/builders/gettext.py (below a comment “XXX should supply tz”):
ctime = datetime.now().strftime('%Y-%m-%d %H:%M%z'),
and to replace it by:
ctime = datetime.now().strftime('%Y-%m-%d %H:%M%z+0300'), # Estonian summertime