source: poinstaller/trunk/fuentes/src/poinstaller.py @ 7436

Last change on this file since 7436 was 6360, checked in by kbut, 3 years ago

sync from github

File size: 1.5 KB
Line 
1import polib
2import os
3import shutil
4import tempfile
5
6
7DEST_TEMP = "share/locale/{}/LC_MESSAGES/"
8
9class PoInstaller:
10        def __init__(self, po_folder, textdomain, dest_folder ):
11                self.po_folder = po_folder
12                self.textdomain = textdomain
13                self.dest_folder = dest_folder
14                self.langs = []
15                self.temp_mo_folder = tempfile.mkdtemp(dir='.',prefix='.mo_')
16
17        def get_languages(self):
18                return [ x[:-3] for x in os.listdir(self.po_folder) if x[-3:] == ".po" ]
19
20        def build(self):
21                if os.path.exists(self.temp_mo_folder):
22                        shutil.rmtree(self.temp_mo_folder)
23                os.makedirs(self.temp_mo_folder)
24                for language in self.get_languages():
25                        aux_file = polib.pofile(os.path.join(self.po_folder,language + ".po"))
26                        aux_path = os.path.join(self.temp_mo_folder, language)
27                        os.makedirs(aux_path)
28                        aux_file.save_as_mofile(os.path.join(aux_path, self.textdomain + ".mo"))
29               
30        def install(self):
31                for language in self.get_languages():
32                        dest = os.path.join(self.dest_folder,DEST_TEMP.format(language))
33                        file_to_copy = os.path.join(self.temp_mo_folder,language,self.textdomain + ".mo")
34                        if not os.path.exists(dest):
35                                os.makedirs(dest)
36                        shutil.copy2(file_to_copy, os.path.join(dest,self.textdomain + ".mo"))
37
38        def setup_install(self):
39                polist = []
40                for language in self.get_languages():
41                        dest = os.path.join(self.dest_folder,DEST_TEMP.format(language))
42                        file_to_install = os.path.join(self.temp_mo_folder, language, self.textdomain + ".mo")
43                        polist.append( ( dest, [ file_to_install ] ) )
44                return polist
45
46        def clean(self):
47                shutil.rmtree(self.temp_mo_folder)
Note: See TracBrowser for help on using the repository browser.