Package translate :: Package convert :: Module po2tiki
[hide private]
[frames] | no frames]

Source Code for Module translate.convert.po2tiki

 1  #!/usr/bin/env python 
 2  # -*- coding: utf-8 -*- 
 3  # 
 4  # Copyright 2008 Mozilla Corporation, Zuza Software Foundation 
 5  # 
 6  # This file is part of translate. 
 7  # 
 8  # translate is free software; you can redistribute it and/or modify 
 9  # it under the terms of the GNU General Public License as published by 
10  # the Free Software Foundation; either version 2 of the License, or 
11  # (at your option) any later version. 
12  # 
13  # translate is distributed in the hope that it will be useful, 
14  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
15  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
16  # GNU General Public License for more details. 
17  # 
18  # You should have received a copy of the GNU General Public License 
19  # along with translate; if not, write to the Free Software 
20  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
21   
22  """ Convert .po files to TikiWiki's language.php files. """ 
23   
24  import sys 
25   
26  from translate.storage import tiki 
27  from translate.storage import po 
28   
29   
30 -class po2tiki:
31
32 - def convertstore(self, thepofile):
33 """Converts a given (parsed) po file to a tiki file. 34 35 @param thepofile: a pofile pre-loaded with input data 36 """ 37 thetargetfile = tiki.TikiStore() 38 for unit in thepofile.units: 39 if not (unit.isblank() or unit.isheader()): 40 newunit = tiki.TikiUnit(unit.source) 41 newunit.settarget(unit.target) 42 locations = unit.getlocations() 43 if locations: 44 newunit.addlocations(locations) 45 # If a word is "untranslated" but the target isn't empty and isn't the same as the source 46 # it's been translated and we switch it. This is an assumption but should remain true as long 47 # as these scripts are used. 48 if newunit.getlocations() == ["untranslated"] and unit.source != unit.target and unit.target != "": 49 newunit.location = [] 50 newunit.addlocation("translated") 51 52 thetargetfile.addunit(newunit) 53 return thetargetfile
54 55
56 -def convertpo(inputfile, outputfile, template=None):
57 """Converts from po file format to tiki. 58 59 @param inputfile: file handle of the source 60 @param outputfile: file handle to write to 61 @param template: unused 62 """ 63 inputstore = po.pofile(inputfile) 64 if inputstore.isempty(): 65 return False 66 convertor = po2tiki() 67 outputstore = convertor.convertstore(inputstore) 68 outputfile.write(str(outputstore)) 69 return True
70 71
72 -def main(argv=None):
73 """Will convert from .po to tiki style .php""" 74 from translate.convert import convert 75 from translate.misc import stdiotell 76 sys.stdout = stdiotell.StdIOWrapper(sys.stdout) 77 78 formats = {"po": ("tiki", convertpo)} 79 80 parser = convert.ConvertOptionParser(formats, description=__doc__) 81 parser.run(argv)
82 83 84 if __name__ == '__main__': 85 main() 86