aboutsummaryrefslogtreecommitdiffstats
path: root/websites/translated_converter.py
diff options
context:
space:
mode:
authorYuri Chornoivan <yurchor@mageia.org>2012-09-09 14:00:09 +0000
committerYuri Chornoivan <yurchor@mageia.org>2012-09-09 14:00:09 +0000
commite47d828404b901010e5646eaa1d70f9a12676073 (patch)
tree700b415bade445577d2120721a3a72da1dc27e40 /websites/translated_converter.py
parent465a20a84e53b2fab8949e382ae86ee47134935a (diff)
downloadtools-e47d828404b901010e5646eaa1d70f9a12676073.tar
tools-e47d828404b901010e5646eaa1d70f9a12676073.tar.gz
tools-e47d828404b901010e5646eaa1d70f9a12676073.tar.bz2
tools-e47d828404b901010e5646eaa1d70f9a12676073.tar.xz
tools-e47d828404b901010e5646eaa1d70f9a12676073.zip
Add scripts for web pages lang templates conversion to POT/PO files and vice versa
Diffstat (limited to 'websites/translated_converter.py')
-rw-r--r--websites/translated_converter.py77
1 files changed, 77 insertions, 0 deletions
diff --git a/websites/translated_converter.py b/websites/translated_converter.py
new file mode 100644
index 00000000..14c17f32
--- /dev/null
+++ b/websites/translated_converter.py
@@ -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)