view htdocs/svg-edit/extras/update-langs.py @ 654:8c828d7b6cd4 tip

PDFList: check for pyPdf.utils.PdfReadError
author Reimar Bauer <rb.proj AT googlemail DOT com>
date Wed, 07 Dec 2016 14:27:25 +0100
parents 8c00e2be925e
children
line wrap: on
line source
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
"""
This is a helper script for the svg-edit project, useful for managing
all the language files

Licensed under the MIT License as is the rest of the project
Requires Python 2.6

Copyright (c) 2010 Jeff Schiller
"""
import os
import json
from types import DictType

def changeTooltipTarget(j):
	"""
	Moves the tooltip target for some tools
	"""
	tools = ['rect_width', 'rect_height']
	for row in j:
		try:
			id = row['id']
			if id in tools:
				row['id'] = row['id'] + '_tool'
		except KeyError:
			pass
	
def updateMainMenu(j):
    """
    Converts title into textContent for items in the main menu
    """
    tools = ['tool_clear', 'tool_open', 'tool_save', 'tool_docprops']
    for row in j:
        try:
            ids = row['id']
            if ids in tools:
                row[u'textContent'] = row.pop('title')
        except KeyError:
            pass

def ourPrettyPrint(j):
    """
    Outputs a string representation of the JSON object passed in
    formatted properly for our lang.XX.js files.
    """
    s = '[' + os.linesep
    js_strings = None
    j.sort()
    for row in j:
        try:
            ids = row['id']
            row_string = json.dumps(row, sort_keys=True, ensure_ascii=False)
            s += row_string + ',' + os.linesep
        except KeyError:
            if type(row) is DictType:
                js_strings = row

    s += json.dumps(js_strings, sort_keys=True, ensure_ascii=False, indent=1) + os.linesep
    s += ']'
    return s

def processFile(filename):
    """
    Loads the given lang.XX.js file, processes it and saves it
    back to the file system
    """
    in_string = open('../editor/locale/' + filename, 'r').read()

    try:
        j = json.loads(in_string)

        # process the JSON object here
        changeTooltipTarget(j)

        # now write it out back to the file
        s = ourPrettyPrint(j).encode("UTF-8")
        open('../editor/locale/' + filename, 'w').write(s)

        print "Updated " + filename
    except ValueError:
        print "ERROR!  " + filename + " was not valid JSON, please fix it!"

if __name__ == '__main__':
    # get list of all lang files and process them
    for file_name in os.listdir('../editor/locale/'):
        if file_name[:4] == "lang":
            processFile(file_name)