Hello again,
In that case, I would double-check the middleware process and settings in 
your project.
One reason could be your are placing LocaleMiddleware after your 
ForceDefaultLanguage,
so https://github.com/django/django/blob/master/django/middleware/locale.py#L26
is setting the default language.

Hope it helps.
 
El sábado, 26 de marzo de 2016, 20:43:09 (UTC+1), Mathieu Poussin escribió:
>
> 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 [email protected].
To post to this group, send email to [email protected].
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/66d4859d-d61b-46ca-b3a0-3232da1c4786%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to