#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import sys
import gettext
import simplejson
from optparse import OptionParser

def main():
	parser = OptionParser()
	parser.add_option("-f", "--mo", dest="mo_file", help="gettext .mo file",
	metavar="FILE", default="messages.mo")
	parser.add_option("-o", "", dest="js_file", help="output .js file",
	metavar="FILE", default="-")
	parser.add_option("-p", "--pack", action="store_true", dest="pack",
	help="output packed .js file", default=False)
	(options, args) = parser.parse_args()

	mof = open(options.mo_file, 'r')
	gt = gettext.GNUTranslations(mof)
	mof.close()

	del(gt._catalog[''])
	if not options.pack:
		json_comment = u"/* file: %s\n" % (options.mo_file, )
		for (k, v) in gt._info.items():
			json_comment += u" * %s: %s\n" % (k, v, )
		json_comment += u" */\n"
		json_data = simplejson.dumps(gt._catalog, sort_keys=True, indent=4) #, ensure_ascii=False)
		json = json_comment + json_data + "\n"
	else:
		json = simplejson.dumps(gt._catalog, sort_keys=True) #, ensure_ascii=False)

	try:
		if(options.js_file == '-'):
			out = sys.stdout
		else:
			out = open(options.js_file, 'w')
		out.write(json)
		out.close()
	except IOError:
		print "IOError"
		sys.exit(1);

if __name__ == "__main__":
	main()
