# HG changeset patch # User Martin Geisler # Date 1231974714 -3600 # Node ID a489e3a94443d63d29528764443dead205d98ef3 # Parent 02e358a3a8a7f0f45b29e74fcd73c15253ad902a i18n: new build_mo command for setup.py This command will generate .mo files under locale/ for the .po files found under i18n/. diff -r 02e358a3a8a7 -r a489e3a94443 .hgignore --- a/.hgignore Thu Jan 15 00:10:54 2009 +0100 +++ b/.hgignore Thu Jan 15 00:11:54 2009 +0100 @@ -28,6 +28,7 @@ tags cscope.* i18n/hg.pot +locale/*/LC_MESSAGES/hg.mo syntax: regexp ^\.pc/ diff -r 02e358a3a8a7 -r a489e3a94443 setup.py --- a/setup.py Thu Jan 15 00:10:54 2009 +0100 +++ b/setup.py Thu Jan 15 00:11:54 2009 +0100 @@ -31,6 +31,8 @@ import tempfile from distutils.core import setup, Extension from distutils.command.install_data import install_data +from distutils.command.build import build +from distutils.spawn import spawn, find_executable from distutils.ccompiler import new_compiler extra = {} @@ -115,7 +117,38 @@ ('install_lib', 'install_dir')) install_data.finalize_options(self) -cmdclass = {'install_data': install_package_data} +class build_mo(build): + + description = "build translations (.mo files)" + + def run(self): + if not find_executable('msgfmt'): + self.warn("could not find msgfmt executable, no translations " + "will be built") + return + + podir = 'i18n' + if not os.path.isdir(podir): + self.warn("could not find %s/ directory" % podir) + return + + join = os.path.join + for po in os.listdir(podir): + if not po.endswith('.po'): + continue + pofile = join(podir, po) + modir = join('locale', po[:-3], 'LC_MESSAGES') + mofile = join(modir, 'hg.mo') + self.mkpath(modir) + self.make_file([pofile], mofile, spawn, + (['msgfmt', '-o', mofile, pofile],)) + self.distribution.data_files.append((join('mercurial', modir), + [mofile])) + +build.sub_commands.append(('build_mo', None)) + +cmdclass = {'install_data': install_package_data, + 'build_mo': build_mo} ext_modules=[ Extension('mercurial.base85', ['mercurial/base85.c']),