| 1 | #!/usr/bin/env python |
|---|
| 2 | |
|---|
| 3 | LANGUAGE_NAMES_PY_FILE = 'conf/language_names.py' |
|---|
| 4 | |
|---|
| 5 | # Need to ensure that the i18n framework is enabled |
|---|
| 6 | from django.conf import settings |
|---|
| 7 | settings.configure(USE_I18N = True) |
|---|
| 8 | |
|---|
| 9 | from django.utils import translation |
|---|
| 10 | |
|---|
| 11 | def 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 | |
|---|
| 64 | if __name__ == "__main__": |
|---|
| 65 | make_language_names() |
|---|