kopia lustrzana https://github.com/hholzgra/ocitysmap
				
				
				
			New i18n.py script to handle I18N tasks
The set of languages is deduced from locale/ directory content.
Usage: i18n.py [options]
 WARNING: This program should be called from ocitysmap/ directory!
Options:
  -h, --help            show this help message and exit
  -P, --make-pot        make locale/ocitysmap.pot
  -p, --make-po         merge locale/ocitysmap.pot with
                        locale/*/LC_MESSAGES/ocitysmap.po
  -m, --compile-mo      compile locale/*/LC_MESSAGES/ocitysmap.mo files
  -n LANGUAGE_CODE, --new-language=LANGUAGE_CODE
                        create .pot file for a new language. LANGUAGE_CODE is
                        like "fr_FR".
			
			
				stable
			
			
		
							rodzic
							
								
									39e93aff75
								
							
						
					
					
						commit
						aed528b7d6
					
				| 
						 | 
				
			
			@ -0,0 +1,103 @@
 | 
			
		|||
#! /usr/bin/env python
 | 
			
		||||
# -*- coding: utf-8 -*-
 | 
			
		||||
 | 
			
		||||
# ocitysmap, city map and street index generator from OpenStreetMap data
 | 
			
		||||
# Copyright (C) 2009  David Decotigny
 | 
			
		||||
# Copyright (C) 2009  Frédéric Lehobey
 | 
			
		||||
# Copyright (C) 2009  David Mentré
 | 
			
		||||
# Copyright (C) 2009  Maxime Petazzoni
 | 
			
		||||
# Copyright (C) 2009  Thomas Petazzoni
 | 
			
		||||
# Copyright (C) 2009  Gaël Utard
 | 
			
		||||
 | 
			
		||||
# This program is free software: you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU Affero General Public License as
 | 
			
		||||
# published by the Free Software Foundation, either version 3 of the
 | 
			
		||||
# License, or any later version.
 | 
			
		||||
 | 
			
		||||
# This program is distributed in the hope that it will be useful,
 | 
			
		||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
# GNU Affero General Public License for more details.
 | 
			
		||||
 | 
			
		||||
# You should have received a copy of the GNU Affero General Public License
 | 
			
		||||
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
import os
 | 
			
		||||
import sys
 | 
			
		||||
import shutil
 | 
			
		||||
import optparse
 | 
			
		||||
import subprocess
 | 
			
		||||
 | 
			
		||||
def make_pot():
 | 
			
		||||
    print "Make locale/ocitysmap.pot"
 | 
			
		||||
    subprocess.check_call(['pygettext', '-o', 'ocitysmap.pot', '-p', 'locale',
 | 
			
		||||
                           'ocitysmap/street_index.py',
 | 
			
		||||
                           'ocitysmap/draw_utils.py'])
 | 
			
		||||
    return
 | 
			
		||||
 | 
			
		||||
def make_po(languages):
 | 
			
		||||
    print "Merge locale/ocitysmap.pot into locale/*/LC_MESSAGES/ocitysmap.po"
 | 
			
		||||
    for l in languages:
 | 
			
		||||
        print " * %s" % l
 | 
			
		||||
        subprocess.check_call(['msgmerge', '-U',
 | 
			
		||||
                               'locale/%s/LC_MESSAGES/ocitysmap.po' % l,
 | 
			
		||||
                               'locale/ocitysmap.pot'])
 | 
			
		||||
    return
 | 
			
		||||
 | 
			
		||||
def compile_mo(languages):
 | 
			
		||||
    print "Compile locale/*/LC_MESSAGES/ocitysmap.mo files"
 | 
			
		||||
    for l in languages:
 | 
			
		||||
        print " * %s" % l
 | 
			
		||||
        subprocess.check_call(['msgfmt', '-o',
 | 
			
		||||
                               'locale/%s/LC_MESSAGES/ocitysmap.mo' %l,
 | 
			
		||||
                               'locale/%s/LC_MESSAGES/ocitysmap.po' %l])
 | 
			
		||||
    return
 | 
			
		||||
 | 
			
		||||
def create_language(country_code):
 | 
			
		||||
    print "Create directory for %s" % country_code
 | 
			
		||||
    os.makedirs('locale/%s/LC_MESSAGES' % country_code)
 | 
			
		||||
    shutil.copyfile('locale/ocitysmap.pot',
 | 
			
		||||
                    'locale/%s/LC_MESSAGES/ocitysmap.po' % country_code)
 | 
			
		||||
    return
 | 
			
		||||
 | 
			
		||||
def get_languages():
 | 
			
		||||
    l = os.listdir('locale')
 | 
			
		||||
    return filter(lambda s: s!='ocitysmap.pot', l)
 | 
			
		||||
 | 
			
		||||
def main():
 | 
			
		||||
    usage = '%prog [options]\n WARNING: This program should be called from ocitysmap/ directory!'
 | 
			
		||||
 | 
			
		||||
    parser = optparse.OptionParser(usage=usage)
 | 
			
		||||
    parser.add_option('-P', '--make-pot', dest='make_pot',
 | 
			
		||||
                      action='store_true', default=False,
 | 
			
		||||
                      help="make locale/ocitysmap.pot")
 | 
			
		||||
    parser.add_option('-p', '--make-po', dest='make_po',
 | 
			
		||||
                      action='store_true', default=False,
 | 
			
		||||
                      help="merge locale/ocitysmap.pot with locale/*/LC_MESSAGES/ocitysmap.po")
 | 
			
		||||
    parser.add_option('-m', '--compile-mo', dest='compile_mo',
 | 
			
		||||
                      action='store_true', default=False,
 | 
			
		||||
                      help="compile locale/*/LC_MESSAGES/ocitysmap.mo files")
 | 
			
		||||
    parser.add_option('-n', '--new-language', dest='new_language',
 | 
			
		||||
                      metavar='LANGUAGE_CODE',
 | 
			
		||||
                      help='create .pot file for a new language. '
 | 
			
		||||
                      'LANGUAGE_CODE is like "fr_FR".',
 | 
			
		||||
                      default=None)
 | 
			
		||||
 | 
			
		||||
    (options, args) = parser.parse_args()
 | 
			
		||||
    if len(args):
 | 
			
		||||
        parser.print_help()
 | 
			
		||||
        return 1
 | 
			
		||||
 | 
			
		||||
    languages = get_languages()
 | 
			
		||||
 | 
			
		||||
    if options.make_pot:
 | 
			
		||||
        make_pot()
 | 
			
		||||
    if options.make_po:
 | 
			
		||||
        make_po(languages)
 | 
			
		||||
    if options.compile_mo:
 | 
			
		||||
        compile_mo(languages)
 | 
			
		||||
    if options.new_language:
 | 
			
		||||
        create_language(options.new_language)
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    sys.exit(main())
 | 
			
		||||
		Ładowanie…
	
		Reference in New Issue