Django

Code

Changeset 914

Show
Ignore:
Timestamp:
10/17/05 14:33:30 (3 years ago)
Author:
hugo
Message:

i18n: once again worked over the django_language parameter (cookie, get, post, session) format. It's now back to HTML format (en-us, not en_US)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/i18n/django/conf/global_settings.py

    r898 r914  
    2727# http://www.w3.org/TR/REC-html40/struct/dirlang.html#langcodes 
    2828# http://blogs.law.harvard.edu/tech/stories/storyReader$15 
    29 # Language codes need to be given in locale format, not in HTML language 
    30 # format. So it's en_US and not en-us to store here. The HTML language 
    31 # is stored in the request.LANGUAGE_CODE variable and will depend on the 
    32 # users browser. 
    33 LANGUAGE_CODE = 'en' 
     29LANGUAGE_CODE = 'en-us' 
    3430 
    3531# Languages we provide translations for out of the base. The 
  • django/branches/i18n/django/conf/project_template/settings/main.py

    r898 r914  
    99MANAGERS = ADMINS 
    1010 
    11 LANGUAGE_CODE = 'en_US
     11LANGUAGE_CODE = 'en-us
    1212 
    1313DATABASE_ENGINE = 'postgresql' # 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'. 
  • django/branches/i18n/django/core/extensions.py

    r869 r914  
    3737        self['LANGUAGES'] = settings.LANGUAGES 
    3838        if hasattr(request, 'LANGUAGE_CODE'): 
    39             self['LANGUAGE_CODE'] = request.LANGUAGE_CODE.replace('_', '-') 
     39            self['LANGUAGE_CODE'] = request.LANGUAGE_CODE 
    4040        else: 
    41             self['LANGUAGE_CODE'] = settings.LANGUAGE_CODE.replace('_', '-') 
     41            self['LANGUAGE_CODE'] = settings.LANGUAGE_CODE 
    4242        if DEBUG and request.META.get('REMOTE_ADDR') in INTERNAL_IPS: 
    4343            self['debug'] = True 
  • django/branches/i18n/django/utils/translation.py

    r904 r914  
    3232# run multiple times for one user 
    3333_accepted = {} 
     34 
     35def to_locale(language): 
     36    "turn a language name (en-us) into a locale name (en_US)" 
     37    p = language.find('-') 
     38    if p >= 0: 
     39        return language[:p].lower()+'_'+language[p:].upper() 
     40    else: 
     41        return language.lower() 
     42 
     43def to_language(locale): 
     44    "turns a locale name (en_US) into a language name (en-us)" 
     45    p = locale.find('_') 
     46    if p >= 0: 
     47        return locale[:p].lower()+'-'+locale[p:].lower() 
     48    else: 
     49        return locale.lower() 
    3450 
    3551class DjangoTranslation(gettext_module.GNUTranslations): 
     
    105121    from django.conf import settings 
    106122 
     123    default_locale = to_locale(settings.LANGUAGE_CODE) 
     124    locale = to_locale(language) 
     125 
    107126    # set up the right translation class 
    108127    klass = DjangoTranslation 
     
    113132 
    114133    try: 
    115         t = gettext_module.translation('django', globalpath, [language, settings.LANGUAGE_CODE], klass) 
     134        t = gettext_module.translation('django', globalpath, [locale, default_locale], klass) 
    116135        t.set_app_and_language(appname, language) 
    117136    except IOError: t = gettext_module.NullTranslations() 
     
    121140        for localepath in settings.LOCALE_PATHS: 
    122141            try: 
    123                 t = gettext_module.translation('django', localepath, [language, settings.LANGUAGE_CODE], klass) 
     142                t = gettext_module.translation('django', localepath, [locale, default_locale], klass) 
    124143                t.set_app_and_language(appname, language) 
    125144            except IOError: t = None 
     
    134153 
    135154    try: 
    136         t = gettext_module.translation('django', projectpath, [language, settings.LANGUAGE_CODE], klass) 
     155        t = gettext_module.translation('django', projectpath, [locale, default_locale], klass) 
    137156        t.set_app_and_language(appname, language) 
    138157    except IOError: t = None 
     
    147166 
    148167        try: 
    149             t = gettext_module.translation('django', apppath, [language, settings.LANGUAGE_CODE], klass) 
     168            t = gettext_module.translation('django', apppath, [locale, default_locale], klass) 
    150169            t.set_app_and_language(appname, language) 
    151170        except IOError: t = None 
     
    180199    if t is not None: 
    181200        try: 
    182             return t.language(
     201            return to_language(t.language()
    183202        except AttributeError: 
    184203            pass 
     
    248267        lang_code = request.GET.get('django_language', None) or request.POST.get('django_language', None) 
    249268        if lang_code is not None: 
    250             if lang_code == 'en' or lang_code.startswith('en_'): 
     269            if lang_code == 'en' or lang_code.startswith('en-'): 
    251270                return lang_code 
    252             lang = gettext_module.find('django', globalpath, [lang_code]) 
     271            lang = gettext_module.find('django', globalpath, [to_locale(lang_code)]) 
    253272            if lang is not None: 
    254273                if hasattr(request, 'session'): 
     
    261280        lang_code = request.session.get('django_language', None) 
    262281        if lang_code is not None: 
    263             if lang_code == 'en' or lang_code.startswith('en_'): 
     282            if lang_code == 'en' or lang_code.startswith('en-'): 
    264283                return lang_code 
    265             lang = gettext_module.find('django', globalpath, [lang_code]) 
     284            lang = gettext_module.find('django', globalpath, [to_locale(lang_code)]) 
    266285            if lang is not None: 
    267286                return lang_code 
     
    269288    lang_code = request.COOKIES.get('django_language', None) 
    270289    if lang_code is not None: 
    271         if lang_code == 'en' or lang_code.startswith('en_'): 
     290        if lang_code == 'en' or lang_code.startswith('en-'): 
    272291            return lang_code 
    273         lang = gettext_module.find('django', globalpath, [lang_code]) 
     292        lang = gettext_module.find('django', globalpath, [to_locale(lang_code)]) 
    274293        if lang is not None: 
    275294            return lang_code 
     
    299318 
    300319        for lang, order in langs: 
    301             if lang == 'en' or lang.startswith('en_'): 
     320            if lang == 'en' or lang.startswith('en-'): 
    302321                # special casing for language en and derivates, because we don't 
    303322                # have an english language file available, but just fallback 
     
    307326                return lang 
    308327            else: 
    309                 langfile = gettext_module.find('django', globalpath, [lang]) 
     328                langfile = gettext_module.find('django', globalpath, [to_locale(lang)]) 
    310329                if langfile: 
    311330                    # reconstruct the actual language from the language 
     
    314333                    # did find de_DE because of language normalization 
    315334                    lang = langfile[len(globalpath):].split('/')[1] 
    316                     _accepted[accept] = lang 
     335                    _accepted[accept] = to_language(lang) 
    317336                    return lang 
    318337