From f3723ce84b44812c7feddd594679ab98f708411f Mon Sep 17 00:00:00 2001 From: Georg Bauer Date: Mon, 17 Oct 2005 14:37:26 +0000 Subject: [PATCH] i18n: added -a switch to make-messags.py to run xgettext on all messagefiles git-svn-id: http://code.djangoproject.com/svn/django/branches/i18n@907 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/bin/make-messages.py | 92 +++++++++++++++++++++---------------- 1 file changed, 53 insertions(+), 39 deletions(-) diff --git a/django/bin/make-messages.py b/django/bin/make-messages.py index 3a893afe45..d8c5299e62 100755 --- a/django/bin/make-messages.py +++ b/django/bin/make-messages.py @@ -5,21 +5,22 @@ import os import sys import getopt -basedir = None +localedir = None if os.path.isdir(os.path.join('conf', 'locale')): - basedir = os.path.abspath(os.path.join('conf', 'locale')) + localedir = os.path.abspath(os.path.join('conf', 'locale')) elif os.path.isdir('locale'): - basedir = os.path.abspath('locale') + localedir = os.path.abspath('locale') else: print "this script should be run from the django svn tree or your project or app tree" sys.exit(1) -(opts, args) = getopt.getopt(sys.argv[1:], 'l:d:v') +(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': @@ -28,14 +29,20 @@ for o, v in opts: domain = v elif o == '-v': verbose = True + elif o == '-a': + all = True -if lang is None or domain is None: +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) -basedir = os.path.join(basedir, lang, 'LC_MESSAGES') -if not os.path.isdir(basedir): - os.makedirs(basedir) +languages = [] + +if lang is not None: + languages.append(lang) +elif all: + languages = [el for el in os.listdir(localedir) if not el.startswith('.')] dot_re = re.compile('\S') def blank(src): @@ -60,37 +67,44 @@ def templateize(src): going = 0 return ''.join(o) -pofile = os.path.join(basedir, '%s.po' % domain) -potfile = os.path.join(basedir, '%s.pot' % domain) +for lang in languages: -if os.path.exists(potfile): + 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) + + for (dirpath, dirnames, filenames) in os.walk("."): + for file in filenames: + if file.endswith('.py') or file.endswith('.html'): + thefile = file + if file.endswith('.html'): + src = open(os.path.join(dirpath, file), "rb").read() + open(os.path.join(dirpath, '%s.py' % file), "wb").write(templateize(src)) + thefile = '%s.py' % file + if verbose: sys.stdout.write('processing file %s in %s\n' % (file, dirpath)) + cmd = 'xgettext %s -d %s -L Python --keyword=gettext_noop --keyword=gettext_lazy --keyword=ngettext_lazy -o - "%s"' % ( + os.path.exists(potfile) and '--omit-header' or '', domain, os.path.join(dirpath, thefile)) + msgs = os.popen(cmd, 'r').read() + if thefile != file: + old = '#: '+os.path.join(dirpath, thefile)[2:] + new = '#: '+os.path.join(dirpath, file)[2:] + msgs = msgs.replace(old, new) + if msgs: + open(potfile, 'ab').write(msgs) + if thefile != file: + os.unlink(os.path.join(dirpath, thefile)) + + msgs = os.popen('msguniq %s' % potfile, 'r').read() + open(potfile, 'w').write(msgs) + if os.path.exists(pofile): + msgs = os.popen('msgmerge %s %s' % (pofile, potfile), 'r').read() + open(pofile, 'wb').write(msgs) os.unlink(potfile) -for (dirpath, dirnames, filenames) in os.walk("."): - for file in filenames: - if file.endswith('.py') or file.endswith('.html'): - thefile = file - if file.endswith('.html'): - src = open(os.path.join(dirpath, file), "rb").read() - open(os.path.join(dirpath, '%s.py' % file), "wb").write(templateize(src)) - thefile = '%s.py' % file - if verbose: sys.stdout.write('processing file %s in %s\n' % (file, dirpath)) - cmd = 'xgettext %s -d %s -L Python --keyword=gettext_noop --keyword=gettext_lazy --keyword=ngettext_lazy -o - "%s"' % ( - os.path.exists(potfile) and '--omit-header' or '', domain, os.path.join(dirpath, thefile)) - msgs = os.popen(cmd, 'r').read() - if thefile != file: - old = '#: '+os.path.join(dirpath, thefile)[2:] - new = '#: '+os.path.join(dirpath, file)[2:] - msgs = msgs.replace(old, new) - if msgs: - open(potfile, 'ab').write(msgs) - if thefile != file: - os.unlink(os.path.join(dirpath, thefile)) - -msgs = os.popen('msguniq %s' % potfile, 'r').read() -open(potfile, 'w').write(msgs) -if os.path.exists(pofile): - msgs = os.popen('msgmerge %s %s' % (pofile, potfile), 'r').read() -open(pofile, 'wb').write(msgs) -os.unlink(potfile) -