root/trunk/languages/make_language_names.py

Revision 224, 2.2 kB (checked in by akaihola, 2 years ago)

[languages] Added the make_language_names script.

  • Property svn:eol-style set to native
Line 
1#!/usr/bin/env python
2
3LANGUAGE_NAMES_PY_FILE = 'conf/language_names.py'
4
5# Need to ensure that the i18n framework is enabled
6from django.conf import settings
7settings.configure(USE_I18N = True)
8
9from django.utils import translation
10
11def make_language_names(target=None):
12    """
13    Create a .py file with three variables:
14    * language_names = ({'language_code': 'de',
15                         'name': 'German',
16                         'name_local': 'Deutsch'}, ...)
17    * language_names_dict = {'de': {'name': 'German',
18                                    'name_local': 'Deutsch'}, ...}
19    * language_choices = (('de', 'Deutsch'), ...)
20
21    ``target`` is the .py file path to write the definitions in.  The default
22    path is django/conf/language_names.py, and the django/ directory is looked
23    up from the module import paths.
24    """
25    if target is None:
26        from os.path import join, abspath
27        from imp import find_module
28        django_root = find_module('django')[1]
29        target = abspath(join(django_root, LANGUAGE_NAMES_PY_FILE))
30    language_names = []
31    for code, name in settings.LANGUAGES:
32        try:
33            translation.activate(code)
34        except IndexError:
35            print "Warning: Can't activate language %r, " \
36                  "using English name %r." % (code, name)
37            translation.activate('en')
38        language_dict = dict(language_code=code,
39                             name=name,
40                             name_local=translation.ugettext(name))
41        language_names.append(language_dict)
42
43    f = file(target, 'w')
44    print 'Writing language names list to\n%s' % target
45    f.write('language_names = %r\n' % (tuple(language_names),))
46
47    language_names_dict = dict(
48        (l['language_code'], dict(name=l['name'], name_local=l['name_local']))
49        for l in language_names)
50    print 'Writing language names dict to\n%s' % target
51    f.write('language_names_dict = %r\n' % language_names_dict)
52
53    language_choices = tuple(
54        (l['language_code'], l['name_local'])
55        for l in language_names)
56    print 'Writing language choices tuple to\n%s' % target
57    f.write('language_choices = %r\n' % (language_choices,))
58
59    f.close()
60
61    print 'Done.'
62
63
64if __name__ == "__main__":
65    make_language_names()
Note: See TracBrowser for help on using the browser.