60
62
for document in documents:
61
63
args += ['-m', document]
62
args += ['-p', os.path.join(self.translations_dir, lang+'.po')]
64
args += ['-p', lang.file_name]
63
65
ret = self.run('po4a-updatepo', args)
70
72
'-k', TRANSLATION_COMPLETION_PERCENTAGE,
72
'-p', 'po/%s.po' % lang,
75
77
return self.run('po4a-translate', args, with_output=True,
76
78
working_dir=os.path.join(PATH, '..'))
81
class Language(object):
82
def __init__(self, po_file):
83
self.file_name = po_file
84
self.gettext_lang_code = os.path.basename(po_file).split('.po')[0]
86
def rewrite_links(self):
87
po_file = polib.pofile(self.file_name)
88
for entry_group in [po_file.untranslated_entries(),
89
po_file.translated_entries(),
90
po_file.fuzzy_entries()]:
91
for entry in entry_group:
92
if '{filename}' in entry.msgid:
94
entry.msgstr = entry.msgid
95
link = re.findall(r'\[.+?\]\(\{filename\}(.+?)\)',
97
entry.msgstr = entry.msgstr.replace(
99
'lang-%s-%s' % (self.gettext_lang_code, link))
100
po_file.save(self.file_name)
79
103
class Translations(object):
80
104
def __init__(self):
82
106
self.translations_dir = os.path.abspath(os.path.join(PATH, '../po'))
83
self.available_languages = \
84
[os.path.basename(a).split('.po')[0] for a
85
in glob.glob(self.translations_dir+'/*.po')]
107
self.available_languages = []
108
for po_filename in glob.glob(self.translations_dir+'/*.po'):
109
self.available_languages += [Language(po_filename)]
86
110
self.documents = self._find_documents()
87
111
self.temp_dir = tempfile.mkdtemp()
88
112
self.po4a = PO4A(self.translations_dir, self.temp_dir)
163
187
title_line = title_line.split(metadata_tag.capitalize())[0]
164
188
title_line = title_line.split(metadata_tag.upper())[0]
165
189
return "%s\nLang: %s\nDate:\n\n" % \
190
(title_line, lang.gettext_lang_code)
192
def rewrite_links(self):
193
for lang in self.available_languages:
168
196
def generate_translations(self):
169
197
for lang in self.available_languages:
172
200
self._call_po4a_translate(doc, lang)
173
201
new_path = os.path.join(PATH, 'pages',
175
(lang, os.path.basename(doc)))
203
(lang.gettext_lang_code,
204
os.path.basename(doc)))
176
205
text = self._new_header(lang, broken_title_line)
178
207
if os.path.exists(new_path):