Mi solución simple (tiene alguna idea de Trac):
#!/usr/bin/env python
from setuptools import setup, find_packages
from setuptools.command.install_lib import install_lib as _install_lib
from distutils.command.build import build as _build
from distutils.cmd import Command
class compile_translations(Command):
description = 'compile message catalogs to MO files via django compilemessages'
user_options = []
def initialize_options(self):
pass
def finalize_options(self):
pass
def run(self):
import os
import sys
from django.core.management.commands.compilemessages import \
compile_messages
curdir = os.getcwd()
os.chdir(os.path.realpath('app_name'))
compile_messages(stderr=sys.stderr)
os.chdir(curdir)
class build(_build):
sub_commands = [('compile_translations', None)] + _build.sub_commands
class install_lib(_install_lib):
def run(self):
self.run_command('compile_translations')
_install_lib.run(self)
setup(name='app',
packages=find_packages(),
include_package_data=True,
setup_requires=['django'],
...
cmdclass={'build': build, 'install_lib': install_lib,
'compile_translations': compile_translations}
)
Esto le ayudará a compilar archivos po cuando la construcción de huevo o instalar el paquete.
La pregunta es sobre la automatización de esta tarea –
La secuencia de comandos de instalación es una secuencia de comandos 'python' normal, por lo que puede usar código de' Django' dentro de ella. Considere 'setup.py' como un programa normal, cuyo objetivo es instalar su paquete y debe seguir varios pasos. Uno de ellos invoca 'compile_messages' from' Django'. Esto hará que la tarea de instalar el paquete se automatice; no es necesario que llame a 'django-admin compilemessages' antes de ejecutar' setup.py'. – gruszczy