سؤال

كيف يمكنني التأكد setup.py يجمع مشاريع ملفات PO وتشملها كلما sdist أنشئ. هذا هو تطبيق Django والعملية اليدوية لتوليد ملفات MO هو تشغيل الأمر التالي في الدليل الجذر للتطبيق:

django-admin compilemessages

(هذا يعني الذهاب إلى مستوى واحد أعمق من Setup.py)

أرغب في تجنب تجميع ملفات مو يدويا في كل مرة. وأنا لا أريد تخزينها في المستودع على الإطلاق.

هل كانت مفيدة؟

المحلول

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

واستخدامها في حياتك setup.py البرنامج النصي قبل تشغيل setup ثم تشمل الملفات التي تم إنشاؤها في setup طريقة.

نصائح أخرى

حلا بسيطا (حصلت على فكرة من 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}
)

سيساعدك ذلك في ترجمة ملفات PO عند إنشاء حزمة بيضة أو تثبيتها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top