1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 """
18 i18n related functions
19 """
20
21 __maintainer__ = 'Philippe Normand <philippe@fluendo.com>'
22
23 from elisa.extern import msgfmt
24 from elisa.core import log
25 import os
26
27 log_category = "po_compile"
28
30 log.info(log_category, "Compiling %s for %s to %s", directory, domain,
31 dest_directory)
32
33 package_path = os.path.dirname(dest_directory).replace(os.path.sep, '.')
34 basename = os.path.basename(dest_directory)
35 mo_files = {package_path: [os.path.join(basename, '*',
36 'LC_MESSAGES', '*.mo')]}
37
38 for filename in os.listdir(directory):
39 lang, ext = os.path.splitext(filename)
40 ext = ext[1:].lower()
41 if ext == 'po':
42 src = os.path.join(directory, filename)
43 destdir = os.path.join(dest_directory, lang, 'LC_MESSAGES')
44 dest = os.path.join(destdir, "%s.mo" % domain)
45 if not os.path.exists(dest):
46 if not os.path.exists(destdir):
47 try:
48 os.makedirs(destdir)
49 except OSError, e:
50 log.warning(log_category,
51 "Could not make directory %r: %r. " \
52 "Skipped %s." % (destdir,e,dst))
53 else:
54 log.info(log_category, "Compiling %s to %s", src, dest)
55 msgfmt.make(src, dest)
56
57 else:
58 src_mtime = os.stat(src)[8]
59 dest_mtime = os.stat(dest)[8]
60 if src_mtime > dest_mtime:
61 log.info(log_category, "Compiling %s to %s", src, dest)
62 msgfmt.make(src, dest)
63 else:
64 log.info(log_category, "Skipping already compiled %r", dest)
65 return mo_files
66
88
94