diff options
Diffstat (limited to 'webapps/qooxdoo-0.6.5-sdk/frontend/framework/tool/modules/msgfmt.py')
-rwxr-xr-x | webapps/qooxdoo-0.6.5-sdk/frontend/framework/tool/modules/msgfmt.py | 273 |
1 files changed, 0 insertions, 273 deletions
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/tool/modules/msgfmt.py b/webapps/qooxdoo-0.6.5-sdk/frontend/framework/tool/modules/msgfmt.py deleted file mode 100755 index 2503357c84..0000000000 --- a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/tool/modules/msgfmt.py +++ /dev/null @@ -1,273 +0,0 @@ -#!/usr/bin/env python -################################################################################ -# -# qooxdoo - the new era of web development -# -# http://qooxdoo.org -# -# Copyright: -# 2006-2007 1&1 Internet AG, Germany, http://www.1and1.org -# -# License: -# LGPL: http://www.gnu.org/licenses/lgpl.html -# EPL: http://www.eclipse.org/org/documents/epl-v10.php -# See the LICENSE file in the project's top-level directory for details. -# -# Authors: -# * Fabian Jakobs (fjakobs) -# -################################################################################ - -# -*- coding: iso-8859-1 -*- -# Written by Martin v. Lwis <loewis@informatik.hu-berlin.de> -# Plural forms support added by alexander smishlajev <alex@tycobka.lv> - -""" -Generate qooxdoo message catalog from textual translation description. - -This program converts a textual Uniforum-style message catalog (.po file) into -a qooxdoo JavaScript catalog (.js file). This is essentially the same function as the -GNU msgfmt program, however, it is a simpler implementation. - -Usage: msgfmt.py [OPTIONS] filename.po - -Options: - -d directory - --output-directory=directory - Specify the output directory to write to. If omitted, output will the current directory - - -n namespace - --namespace=namespace - JavaScript target namespace - - -h - --help - Print this message and exit. - - -V - --version - Display version information and exit. -""" - -import sys -import os -import getopt -import struct -import array - -__version__ = "1.1" - -MESSAGES = {} - - -def usage (ecode, msg=''): - """ - Print usage and msg and exit with given code. - """ - print >> sys.stderr, __doc__ - if msg: - print >> sys.stderr, msg - sys.exit(ecode) - - -def add (msgid, transtr, fuzzy): - """ - Add a non-fuzzy translation to the dictionary. - """ - global MESSAGES - if not fuzzy and transtr and not transtr.startswith('\0'): - MESSAGES[msgid] = transtr - - -def escapeJS(str): - str = str.replace('"', '\\"') - str = str.replace("'", "\\'") - return str - - -def generate(infile, languageCode, namespace): - global MESSAGES - if namespace != "": namespace += "." - if len(languageCode.split("_")) > 1: - requireString = "#require(%s%s)" % (namespace, languageCode.split("_")[0]) - else: - requireString = "" - - output = '''/* ************************************************************************ - - qooxdoo - the new era of web development - - http://qooxdoo.org - - Copyright: - 2004-2007 by 1&1 Internet AG, Germany, http://www.1and1.org - - License: - LGPL: http://www.gnu.org/licenses/lgpl.html - EPL 1.0: http://www.eclipse.org/org/documents/epl-v10.php - - Authors: - * Sebastian Werner (wpbasti) - * Andreas Ecker (ecker) - * Fabian Jakobs (fjakobs) - -************************************************************************ */ - -/* ************************************************************************ - -#require(qx.Locale) -%s -************************************************************************ */ - -/* -WARNING: This file is generated by the gettext tools from %s. Do not edit it by hand. -*/ - -qx.Locale.define("%s%s", -{ -''' % (requireString, infile, namespace, languageCode) - - translations = [] - normalizedMessages = {} - for msg in MESSAGES: - keys = msg.split("\0"); - if len(keys) <= 1: - normalizedMessages[msg] = MESSAGES[msg] - continue - values = MESSAGES[msg].split("\0"); - for i in range(len(keys)): - normalizedMessages[keys[i]] = values[i] - - for msg in normalizedMessages: - if msg == "": continue - translations.append(' "%s": "%s"' % (msg, escapeJS(normalizedMessages[msg]))) - output += (",\n").join(translations) - output += "\n});" - #print output - return output - - -def make (filename, outdir, namespace): - ID = 1 - STR = 2 - global MESSAGES - MESSAGES = {} - - # Compute .mo name from .po name and arguments - if filename.endswith('.po'): - infile = filename - else: - infile = filename + '.po' - - basename = os.path.splitext(os.path.basename(infile))[0] - outfile = os.path.join(outdir, basename + '.js') - - try: - lines = open(infile).readlines() - except IOError, msg: - print >> sys.stderr, msg - sys.exit(1) - - section = None - fuzzy = 0 - - # Parse the catalog - msgid = msgstr = '' - lno = 0 - for l in lines: - lno += 1 - # If we get a comment line after a msgstr, this is a new entry - if l[0] == '#' and section == STR: - add(msgid, msgstr, fuzzy) - section = None - fuzzy = 0 - # Record a fuzzy mark - if l[:2] == '#,' and (l.find('fuzzy') >= 0): - fuzzy = 1 - # Skip comments - if l[0] == '#': - continue - # Start of msgid_plural section, separate from singular form with \0 - if l.startswith('msgid_plural'): - msgid += '\0' - l = l[12:] - # Now we are in a msgid section, output previous section - elif l.startswith('msgid'): - if section == STR: - add(msgid, msgstr, fuzzy) - section = ID - l = l[5:] - msgid = msgstr = '' - # Now we are in a msgstr section - elif l.startswith('msgstr'): - section = STR - l = l[6:] - # Check for plural forms - if l.startswith('['): - # Separate plural forms with \0 - if not l.startswith('[0]'): - msgstr += '\0' - # Ignore the index - must come in sequence - l = l[l.index(']') + 1:] - # Skip empty lines - l = l.strip() - if not l: - continue - # XXX: Does this always follow Python escape semantics? - l = eval(l) - if section == ID: - msgid += l - elif section == STR: - msgstr += l - else: - print >> sys.stderr, 'Syntax error on %s:%d' % (infile, lno), \ - 'before:' - print >> sys.stderr, l - sys.exit(1) - # Add last entry - if section == STR: - add(msgid, msgstr, fuzzy) - - # Compute output - output = generate(infile, basename, namespace) - - - try: - open(outfile,"w").write(output) - except IOError,msg: - print >> sys.stderr, msg - - - -def main (): - try: - opts, args = getopt.getopt(sys.argv[1:], 'hVd:n:', - ['help', 'version', 'output-directory=', 'namespace=']) - except getopt.error, msg: - usage(1, msg) - - outdir = "." - ns = "" - # parse options - for opt, arg in opts: - if opt in ('-h', '--help'): - usage(0) - elif opt in ('-V', '--version'): - print >> sys.stderr, "msgfmt.py", __version__ - sys.exit(0) - elif opt in ('-d', '--output-directory'): - outdir = arg - elif opt in ('-n', '--namespace'): - ns = arg - # do it - if not args: - print >> sys.stderr, 'No input file given' - print >> sys.stderr, "Try `msgfmt --help' for more information." - return - - for filename in args: - make(filename, outdir, ns) - - -if __name__ == '__main__': - main() |