23
23
"""build_mo command for setup.py"""
25
25
from distutils import log
26
from distutils.command.build import build
27
26
from distutils.core import Command
28
27
from distutils.dep_util import newer
29
28
from distutils.spawn import find_executable
35
33
class build_mo(Command):
36
34
"""Subcommand of build command: build_mo"""
68
66
if self.source_dir is None:
69
67
self.source_dir = 'po'
70
68
if self.lang is None:
72
re_po = re.compile(r'^(?:%s-)?([a-zA-Z_]+)\.po$' % self.prj_name)
74
re_po = re.compile(r'^([a-zA-Z_]+)\.po$')
69
re_po = re.compile(r'^([a-zA-Z_]+)\.po$')
76
71
for i in os.listdir(self.source_dir):
77
72
mo = re_po.match(i)
83
if find_executable('msgfmt') is None:
84
log.warn("GNU gettext msgfmt utility not found!")
85
log.warn("Skip compiling po files.")
89
if find_executable('msginit') is None:
90
log.warn("GNU gettext msginit utility not found!")
91
log.warn("Skip creating English PO file.")
93
log.info('Creating English PO file...')
94
pot = (self.prj_name or 'messages') + '.pot'
96
self.spawn(['msginit',
99
'-i', os.path.join(self.source_dir, pot),
100
'-o', os.path.join(self.source_dir, en_po),
88
103
basename = self.output_base
89
104
if not basename.endswith('.mo'):
94
po_prefix = self.prj_name + '-'
95
107
for lang in self.lang:
96
108
po = os.path.join('po', lang + '.po')
97
109
if not os.path.isfile(po):
98
po = os.path.join('po', po_prefix + lang + '.po')
110
po = os.path.join('po', lang + '.po')
99
111
dir_ = os.path.join(self.build_dir, lang, 'LC_MESSAGES')
100
112
self.mkpath(dir_)
101
113
mo = os.path.join(dir_, basename)
102
114
if self.force or newer(po, mo):
103
115
log.info('Compile: %s -> %s' % (po, mo))
107
build.sub_commands.insert(0, ('build_mo', None))
116
self.spawn(['msgfmt', '-o', mo, po])