Hello,

I have an issue, I am creating a website that will be available in many 
languages, sharing the same database.
Most models have a "language" attribute that is the 2 letters from the 
language code (en, es, fr, etc.).

I am trying to find a way to show the correct content per language.

I tried many things, creating a custom manager :

from django.utils.translation import get_language, get_language_info
from django.db import models

class PerLanguageManager(models.Manager):
    def get_queryset(self):
        if get_language():
            return super(PerLanguageManager, self).get_queryset().filter(
                language=get_language_info(get_language())['code'])
        else:
            return super(PerLanguageManager, self).get_queryset()


Or overriding get_queryset using another method : (The language is always 
present in the url as /en/ or /es/) 

class RecipeIndexView(generic.ListView):
    paginate_by = 10

    def get_queryset(self):
        return 
Recipe.objects.filter(language=get_language_from_request(self.request, 
check_path=False))

But nothing work, I always get the default configured language (even if 
with the debug toolbar tell me the site is in another language, and all the 
translations are correctly done in the language specified in the URL, I 
always get the default language from the queries...)

I'm using a specific middleware to ignore the language specified in the 
browser to only use the language specified in the URL :
class ForceDefaultLanguageMiddleware(object):
    """
    Ignore Accept-Language HTTP headers

    This will force the I18N machinery to always choose 
settings.LANGUAGE_CODE
    as the default initial language, unless another one is set via sessions 
or cookies

    Should be installed *before* any middleware that checks 
request.META['HTTP_ACCEPT_LANGUAGE'],
    namely django.middleware.locale.LocaleMiddleware
    """
    def process_request(self, request):
        if 'HTTP_ACCEPT_LANGUAGE' in request.META:
            del request.META['HTTP_ACCEPT_LANGUAGE']


Any idea of how to make this work ? What is the good way to do this ?

Thank you.
Mathieu

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/5988f3dc-1a46-4638-bee8-ab367e9eed33%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to