Wie gettext Übersetzungen in setup.py eines Django app kompilieren
-
19-09-2019 - |
Frage
Wie kann ich sicher setup.py
compiles Projekte PO-Dateien und schließen sie zu machen, wenn ein sdist
erstellt wird. Dies ist eine Django-Applikation und manueller Prozess zu MO-Dateien zu erzeugen, ist folgender Befehl in der App-Root-Verzeichnis ausgeführt werden:
django-admin compilemessages
(dies bedeutet, geht eine Ebene tiefer als setup.py)
Ich möchte manuell vermeiden Kompilieren MO jedes Mal Dateien. Und ich will mich nicht in dem Repository überhaupt speichern.
Lösung
from django.core.management.commands.compilemessages import compile_messages
und verwenden Sie es in Ihrem setup.py
Skript, bevor Sie setup
laufen und dann schließen erstellten Dateien in setup
Methode.
Andere Tipps
Meine einfache Lösung (bekommt eine Vorstellung von 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}
)
Dies wird Ihnen helfen po-Dateien zusammenstellen, wenn Sie Ei bauen oder Paket installieren.