Question

Comment puis-je faire setup.py vous compile des projets les fichiers PO et les inclure à chaque fois qu'un sdist est créé. Ceci est une application Django et processus manuel pour générer des fichiers MO est d'exécuter la commande suivante dans le répertoire racine de l'application:

django-admin compilemessages

(Cela signifie aller un niveau plus profond que setup.py)

Je voudrais éviter de compiler manuellement les fichiers MO à chaque fois. Et je ne veux pas les stocker dans le référentiel du tout.

Était-ce utile?

La solution

from django.core.management.commands.compilemessages import compile_messages

et l'utiliser dans votre script setup.py avant d'exécuter setup puis inclure des fichiers créés dans la méthode de setup.

Autres conseils

Ma solution simple (j'ai eu une idée 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}
)

Cela vous aidera à compiler des fichiers po lorsque vous la construction oeuf ou package d'installation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top