2010-03-12 12 views
6

के setup.py में गेटटेक्स्ट अनुवादों को संकलित करने के लिए कैसे करें मैं setup.py परियोजनाओं को पीओ फाइलों को संकलित कर सकता हूं और जब भी sdist बनाया जाता है तो उन्हें शामिल कर सकते हैं।Django ऐप

django-admin compilemessages 

मैं चाहते हैं (इसका मतलब यह है setup.py से एक स्तर गहरी जा रहा): यह एक Django एप्लिकेशन और मैन्युअल प्रक्रिया एमओ फ़ाइलें उत्पन्न करने के लिए एप्लिकेशन के रूट निर्देशिका में निम्न आदेश को चलाने के लिए है हर बार एमओ फ़ाइलों को मैन्युअल रूप से संकलित करने से बचें। और मैं उन्हें भंडार में बिल्कुल स्टोर नहीं करना चाहता हूं।

उत्तर

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

और अपने setup.py लिपि में इसका इस्तेमाल करते हैं इससे पहले कि आप setup विधि में setup चलाने के लिए और उसके बाद बनाई गई फ़ाइलों में शामिल हैं।

#!/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} 
) 

यह आपको पो फ़ाइलें संकलन जब आप अंडे के निर्माण या पैकेज स्थापित करने में मदद मिलेगी:

+1

प्रश्न यह कार्य स्वचालित करने के बारे में है –

+0

सेटअप स्क्रिप्ट एक सामान्य 'पायथन' स्क्रिप्ट है, इसलिए आप इसके अंदर 'Django' से कोड का उपयोग कर सकते हैं। एक सामान्य प्रोग्राम 'setup.py' पर विचार करें, जिसका लक्ष्य आपके पैकेज को स्थापित करना है और उसे विभिन्न चरणों का पालन करना होगा। उनमें से एक 'Django' से 'compile_messages' का आह्वान कर रहा है। यह स्वचालित रूप से पैकेज को स्थापित करने का कार्य करेगा - आपको 'setup.py' चलाने से पहले 'django-admin compilemessages' को कॉल करने की आवश्यकता नहीं है। – gruszczy

5

मेरे सरल समाधान (Trac से कुछ विचार आया)।

+0

अच्छा लगता है। मैं इसे बाद में कोशिश करूंगा। धन्यवाद। – muhuk

+0

यह अच्छा है, लेकिन django स्थापित नहीं होने पर 'python setup.py install' को कॉल करते समय विफल रहता है (इंस्टॉलर django इंस्टॉल करने से पहले इंस्टॉल कमांड चलाने की कोशिश करता है) –

+0

मैंने इसे ठीक करने के लिए setup_requires = [' django '] जोड़ा, इस चाल का उपयोग करता है https://bitbucket.org/slav0nic/djangobb/src/de8e836662e8c5e3a294717c24238b20f3cced47/setup.py?at=default में – slav0nic

संबंधित मुद्दे