Changeset 595

Show
Ignore:
Timestamp:
08/27/10 17:40:00 (3 years ago)
Author:
jose.brandao
Message:

Fixing middleware for user locale settings and middleware order to make flatpages work with i18n

Location:
trunk/opentrials
Files:
1 added
5 modified

Legend:

Unmodified
Added
Removed
  • trunk/opentrials/middleware/user_locale.py

    r380 r595  
    1212 
    1313    def process_request(self, request): 
    14         if request.user.is_authenticated(): 
    15             language = request.user.get_profile().preferred_language 
    16             translation.activate(language) 
    17             request.LANGUAGE_CODE = translation.get_language() 
    18         else: 
    19             language = translation.get_language_from_request(request) 
    20             translation.activate(language) 
    21             request.LANGUAGE_CODE = translation.get_language() 
     14        if not request.session.get('django_language', None): 
     15            if request.user.is_authenticated(): 
     16                language = request.user.get_profile().preferred_language 
     17                translation.activate(language) 
     18                request.LANGUAGE_CODE = translation.get_language() 
     19            else: 
     20                language = translation.get_language_from_request(request) 
     21                translation.activate(language) 
     22                request.LANGUAGE_CODE = translation.get_language() 
    2223 
    2324    def process_response(self, request, response): 
  • trunk/opentrials/polyglot/models.py

    r582 r595  
    107107        return [field.name for field in trans_model._meta.fields if field.name not in ('id','language','content_type','object_id')] 
    108108 
     109def get_ordered_languages(display_language, lower=False): 
     110    """Returns available languages ordered according to display language given""" 
     111 
     112    # Just sorts languages placing preferred language first 
     113    languages = ([lang[0] for lang in settings.MANAGED_LANGUAGES_CHOICES if lang[0] == display_language] + 
     114                 [lang[0] for lang in settings.MANAGED_LANGUAGES_CHOICES if lang[0] != display_language]) 
     115    languages = map(str, languages) 
     116 
     117    if lower: 
     118        languages = map(lambda s: s.lower(), languages) 
     119 
     120    return languages 
     121 
  • trunk/opentrials/polyglot/templatetags/polyglot_tags.py

    r593 r595  
    11from django import template 
    2 from django.conf import settings 
     2 
     3from polyglot.models import get_ordered_languages 
    34 
    45register = template.Library() 
     
    67class JSConstantsNode(template.Node): 
    78    def render(self, context): 
     9        # It depends on 'request' template context processor 
    810        display_language = context['request'].user.get_profile().preferred_language.lower() 
    911 
    10         ordered_languages = ([lang[0] for lang in settings.MANAGED_LANGUAGES_CHOICES if lang[0] == display_language] + 
    11                              [lang[0] for lang in settings.MANAGED_LANGUAGES_CHOICES if lang[0] != display_language]) 
    12         ordered_languages = map(lambda s: s.lower(), map(str, ordered_languages)) 
     12        ordered_languages = get_ordered_languages(display_language, lower=True) 
    1313 
    14         default_second_language = ordered_languages[0] == 'en' and display_language or 'en' 
     14        # Default second language must be english 
     15        if len(ordered_languages) <= 1: 
     16            default_second_language = None 
     17        else: 
     18            default_second_language = ordered_languages[1] 
    1519 
    1620        return """MULTILINGUAL_FIELDS = { 
  • trunk/opentrials/settings.py

    r594 r595  
    6363    'django.middleware.csrf.CsrfViewMiddleware', 
    6464    'middleware.scriptprefix.ScriptPrefixMiddleware', 
    65     'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware', 
    6665    'django.middleware.locale.LocaleMiddleware', 
    6766    'middleware.user_locale.UserLocaleMiddleware', 
     67    'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware', 
    6868) 
    6969 
  • trunk/opentrials/templates/base.html

    r594 r595  
    124124                        {% csrf_token %} 
    125125                        <input type="hidden" id="language" name="language"> 
    126                         <li><a id="lang_pt-BR" href="" title="{% trans 'Change language to Portuguese' %}">PT</a></li> 
    127                         <li><a id="lang_es" href="" title="{% trans 'Change language to Spanish' %}">ES</a></li> 
    128                         <li><a id="lang_en" href="" title="{% trans 'Change language to English' %}">EN</a></li> 
     126                        <li><a id="lang_pt-BR" href="javascript: void(0)" title="{% trans 'Change language to Portuguese' %}">PT</a></li> 
     127                        <li><a id="lang_es" href="javascript: void(0)" title="{% trans 'Change language to Spanish' %}">ES</a></li> 
     128                        <li><a id="lang_en" href="javascript: void(0)" title="{% trans 'Change language to English' %}">EN</a></li> 
    129129                    </ul> 
    130130                    </form>