diff options
Diffstat (limited to 'zarb-ml/mageia-i18n/attachments/20120909/c36e610c/attachment.obj')
-rw-r--r-- | zarb-ml/mageia-i18n/attachments/20120909/c36e610c/attachment.obj | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/zarb-ml/mageia-i18n/attachments/20120909/c36e610c/attachment.obj b/zarb-ml/mageia-i18n/attachments/20120909/c36e610c/attachment.obj new file mode 100644 index 000000000..14c17f32a --- /dev/null +++ b/zarb-ml/mageia-i18n/attachments/20120909/c36e610c/attachment.obj @@ -0,0 +1,77 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import errno, glob, polib, re, os, getopt, sys +from time import strftime + +def usage(): + print '\nUsage: python %s [OPTION]' %os.path.basename(sys.argv[0]) + print ' generates po file for existing lang translations' + print 'Options: -h, --help : usage' + print ' -l lang_code, --language lang_code : code of the translation language' + sys.exit(2) +try: + opts, args = getopt.getopt(sys.argv[1:], "hl:", ["help", "language="]) +except getopt.GetoptError: + usage() # print help information and exit + +language='' +for o,a in opts: + if o in ("-h", "--help"): + usage() + if o in ("-l", "--language"): + lang_code=a + +if lang_code == '': + sys.exit('Empty language code') + +file_extension = '.' + lang_code + '.lang' +file_mask = '*' + file_extension +for langfile in glob.glob(file_mask): + langfilename = langfile.replace(file_extension, '') + # Create localization directories if needed + podir = langfilename + '/po' + try: + os.makedirs(podir) + except OSError, e: + if e.errno != errno.EEXIST: + raise + #open lang file + text = open(langfile,"r").read() + newtext = text.split('\n\n',1)[0] + + # Write PO file + po = polib.POFile() + pocreationtime = strftime('%Y-%m-%d %H:%M%z') + po.metadata = { + 'Project-Id-Version': langfile, + 'Report-Msgid-Bugs-To': 'mageia-i18n@mageia.org', + 'POT-Creation-Date': pocreationtime, + 'PO-Revision-Date': pocreationtime, + 'Last-Translator': 'Duffy Duck <d_duck@nowher.net>', + 'Language-Team': lang_code + ' <mageia-' + lang_code + '@mageia.org>', + 'MIME-Version': '1.0', + 'Content-Type': 'text/plain; charset=UTF-8', + 'Content-Transfer-Encoding': '8bit', + } + + # Parse contents and add them to POT + messagetemplate='\n\n#\ .*?\n\n' + mpattern=re.compile(messagetemplate,re.DOTALL) + for mblock in mpattern.findall(text): + mblock_stripped = mblock.strip('\n') + message_comment, message_text = mblock.strip('\n').split('\n',1) + # Strip '# ' from comments + message_comment = message_comment.lstrip('# ') + message_id, message_str = message_text.split('\n',1) + # Strip ';' from msgid + message_id = message_id.lstrip(';') + potentry = polib.POEntry( + msgctxt = message_comment, + msgid = message_id.decode('utf-8'), + msgstr = message_str.decode('utf-8'), + occurrences=[(langfile,'')] + ) + po.append(potentry) + pofilename = langfilename + '/po/' + lang_code + '.po' + po.save(pofilename) |