diff -r 6641e941ef1e -r ff1a9aa48cfd app/django/bin/make-messages.py --- a/app/django/bin/make-messages.py Tue Oct 14 12:36:55 2008 +0000 +++ b/app/django/bin/make-messages.py Tue Oct 14 16:00:59 2008 +0000 @@ -1,159 +1,11 @@ #!/usr/bin/env python -# Need to ensure that the i18n framework is enabled -from django.conf import settings -settings.configure(USE_I18N = True) - -from django.utils.translation import templatize -import re -import os -import sys -import getopt -from itertools import dropwhile - -pythonize_re = re.compile(r'\n\s*//') - -def make_messages(): - localedir = None - - if os.path.isdir(os.path.join('conf', 'locale')): - localedir = os.path.abspath(os.path.join('conf', 'locale')) - elif os.path.isdir('locale'): - localedir = os.path.abspath('locale') - else: - print "This script should be run from the django svn tree or your project or app tree." - print "If you did indeed run it from the svn checkout or your project or application," - print "maybe you are just missing the conf/locale (in the django tree) or locale (for project" - print "and application) directory?" - print "make-messages.py doesn't create it automatically, you have to create it by hand if" - print "you want to enable i18n for your project or application." - sys.exit(1) - - (opts, args) = getopt.getopt(sys.argv[1:], 'l:d:va') - - lang = None - domain = 'django' - verbose = False - all = False - - for o, v in opts: - if o == '-l': - lang = v - elif o == '-d': - domain = v - elif o == '-v': - verbose = True - elif o == '-a': - all = True - - if domain not in ('django', 'djangojs'): - print "currently make-messages.py only supports domains 'django' and 'djangojs'" - sys.exit(1) - if (lang is None and not all) or domain is None: - print "usage: make-messages.py -l " - print " or: make-messages.py -a" - sys.exit(1) - - languages = [] - - if lang is not None: - languages.append(lang) - elif all: - languages = [el for el in os.listdir(localedir) if not el.startswith('.')] - - for lang in languages: - - print "processing language", lang - basedir = os.path.join(localedir, lang, 'LC_MESSAGES') - if not os.path.isdir(basedir): - os.makedirs(basedir) - - pofile = os.path.join(basedir, '%s.po' % domain) - potfile = os.path.join(basedir, '%s.pot' % domain) - - if os.path.exists(potfile): - os.unlink(potfile) +if __name__ == "__main__": + import sys + name = sys.argv[0] + args = ' '.join(sys.argv[1:]) + print >> sys.stderr, "%s has been moved into django-admin.py" % name + print >> sys.stderr, 'Please run "django-admin.py makemessages %s" instead.'% args + print >> sys.stderr + sys.exit(1) - all_files = [] - for (dirpath, dirnames, filenames) in os.walk("."): - all_files.extend([(dirpath, f) for f in filenames]) - all_files.sort() - for dirpath, file in all_files: - if domain == 'djangojs' and file.endswith('.js'): - if verbose: sys.stdout.write('processing file %s in %s\n' % (file, dirpath)) - src = open(os.path.join(dirpath, file), "rb").read() - src = pythonize_re.sub('\n#', src) - open(os.path.join(dirpath, '%s.py' % file), "wb").write(src) - thefile = '%s.py' % file - cmd = 'xgettext -d %s -L Perl --keyword=gettext_noop --keyword=gettext_lazy --keyword=ngettext_lazy:1,2 --from-code UTF-8 -o - "%s"' % (domain, os.path.join(dirpath, thefile)) - (stdin, stdout, stderr) = os.popen3(cmd, 't') - msgs = stdout.read() - errors = stderr.read() - if errors: - print "errors happened while running xgettext on %s" % file - print errors - sys.exit(8) - old = '#: '+os.path.join(dirpath, thefile)[2:] - new = '#: '+os.path.join(dirpath, file)[2:] - msgs = msgs.replace(old, new) - if os.path.exists(potfile): - # Strip the header - msgs = '\n'.join(dropwhile(len, msgs.split('\n'))) - else: - msgs = msgs.replace('charset=CHARSET', 'charset=UTF-8') - if msgs: - open(potfile, 'ab').write(msgs) - os.unlink(os.path.join(dirpath, thefile)) - elif domain == 'django' and (file.endswith('.py') or file.endswith('.html')): - thefile = file - if file.endswith('.html'): - src = open(os.path.join(dirpath, file), "rb").read() - thefile = '%s.py' % file - open(os.path.join(dirpath, thefile), "wb").write(templatize(src)) - if verbose: - sys.stdout.write('processing file %s in %s\n' % (file, dirpath)) - cmd = 'xgettext -d %s -L Python --keyword=gettext_noop --keyword=gettext_lazy --keyword=ngettext_lazy:1,2 --keyword=ugettext_noop --keyword=ugettext_lazy --keyword=ungettext_lazy:1,2 --from-code UTF-8 -o - "%s"' % ( - domain, os.path.join(dirpath, thefile)) - (stdin, stdout, stderr) = os.popen3(cmd, 't') - msgs = stdout.read() - errors = stderr.read() - if errors: - print "errors happened while running xgettext on %s" % file - print errors - sys.exit(8) - if thefile != file: - old = '#: '+os.path.join(dirpath, thefile)[2:] - new = '#: '+os.path.join(dirpath, file)[2:] - msgs = msgs.replace(old, new) - if os.path.exists(potfile): - # Strip the header - msgs = '\n'.join(dropwhile(len, msgs.split('\n'))) - else: - msgs = msgs.replace('charset=CHARSET', 'charset=UTF-8') - if msgs: - open(potfile, 'ab').write(msgs) - if thefile != file: - os.unlink(os.path.join(dirpath, thefile)) - - if os.path.exists(potfile): - (stdin, stdout, stderr) = os.popen3('msguniq --to-code=utf-8 "%s"' % potfile, 'b') - msgs = stdout.read() - errors = stderr.read() - if errors: - print "errors happened while running msguniq" - print errors - sys.exit(8) - open(potfile, 'w').write(msgs) - if os.path.exists(pofile): - (stdin, stdout, stderr) = os.popen3('msgmerge -q "%s" "%s"' % (pofile, potfile), 'b') - msgs = stdout.read() - errors = stderr.read() - if errors: - print "errors happened while running msgmerge" - print errors - sys.exit(8) - open(pofile, 'wb').write(msgs) - os.unlink(potfile) - -if __name__ == "__main__": - make_messages()