Thanks for the tips about the translation module, in my case, I think it 
would be better to keep managing it the way I do as each models have 
complex relation with other models that are only bound to a specific 
language of the model (Like tags, comments, steps (This is about recipes), 
etc.
I also suppose that would break stuff like Reversion or Haystack (I prefer 
to keep my models as simple and standard as possible).

The weird thing is that, when I switch to a language, everything work fine, 
except dynamic queryset, exemple :
I go to "/en/r/" (The main recipe list), I expect to only see the english 
recipes, but I get the Spanish ones in all cases (This is the default 
language), but I can see that everything else is translated correctly to 
english, and the HTTP header response tell me the page is in English, so I 
think the problem is really in my queryset, why is it always selecting the 
default language just for the queryset when everything else is translated 
correctly ?

Thanks.
Mathieu

On Sunday, 27 March 2016 04:49:20 UTC+2, Daniel Chimeno wrote:
>
> Hello,
>
> If you are able to change the schema I would suggest you to use 
> modeltranslation [https://github.com/deschler/django-modeltranslation],
> also the source code of that app can help you in order to take an specific 
> approach to your project.
>
> About the URL's, if you use i18urls, it has priority over the http headers 
> [
> https://docs.djangoproject.com/en/1.9/topics/i18n/translation/#module-django.conf.urls.i18n]
>  
> (Not confirmed, but was true last time I checked it)
>
>
> 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/dbb9dff6-c89b-40ca-9277-f6f24938eaa3%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to