I am writing my own python application and I am wondering what is the correct way to include localisation in source distributions. I struggled with the documentation of setuptools; localisation is not even mentioned there. I use pypabel to extract my message catalogues and to compile them.
Questions
- Is there a possibility to compile
*.po
to*.mo
automatically before creating a source package with setup.py? Currently I have to compile everything before manually for each language... Where should I include those
*.mo
-files? Several linux distributions have different places for those files. In my opinion I line like this insetup.py
data_files=[('share/locale/de/LC_MESSAGES', ['locale/de/LC_MESSAGES/project.mo'])
does not really make sense. It may work on a particular linux machine when installing with pip. But it may break on bsd or windows...
For the first: there are tools for handling po-files in Python, suggest you look into Babel, then you get the extra commands for setup.py.
It should be possible to also hook the
compile_catalogs
as requisite for source build, but I haven't found need for it, as you can't test the messages from a package linked withpython setup.py develop
if you don't compile first. Also, maybe your source build does not need the.mo
at all if you require Babel.For the second: Our apps use the pyramid web framework, the convention there is to use package_data:
then if your localizations are in
yourpackage/i18n/
you can usepkg_resources
to find the path, for example:will point to the location of translations.