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.

