Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] get_language() no muestra lo que quiero

Estas en el tema de get_language() no muestra lo que quiero en el foro de Python en Foros del Web. Hola a todos Sigo haciendo pruebas con un sistema multilenguaje en django y me ha surgido otro problema :( Tengo un combo que permite cambiar ...
  #1 (permalink)  
Antiguo 11/07/2014, 14:21
Avatar de kojicomics  
Fecha de Ingreso: junio-2013
Mensajes: 49
Antigüedad: 10 años, 10 meses
Puntos: 1
get_language() no muestra lo que quiero

Hola a todos

Sigo haciendo pruebas con un sistema multilenguaje en django y me ha surgido otro problema :(

Tengo un combo que permite cambiar el idioma del usuario entre los valores definidos en 'settings.py':

Código Python:
Ver original
  1. LANGUAGE_CODE = 'es-ES'
  2.  
  3. LANGUAGES = (
  4.     ('es-ES', 'Spanish'),
  5.     ('en', 'English'),
  6.     )

Este cambio funciona correctamente y puedo comprobar que el valor cambia cuando muestro el LANGUAGE_CODE desde un template

Ahora necesito acceder a ese mismo valor desde una vista para mostrar el modelo correspondiente al idioma, y según la documentación debo utilizar la función 'django.utils.translation.get_language()'

El problema es que esta función siempre me muestra el valor que está por defecto en la variable LANGUAGE_CODE en el fichero 'settings.py', a diferencia de cuando lo muestro en el template, que cambia sin problemas

He leído algo acerca de obtener el valor con "request.LANGUAGE_CODE", pero no consigo que funcione y tampoco me convence...

¿Alguien sabe qué estoy haciendo mal?

Un saludo!

Última edición por razpeitia; 11/07/2014 a las 15:04
  #2 (permalink)  
Antiguo 11/07/2014, 15:16
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: get_language() no muestra lo que quiero

Después de leer la documentación.
https://docs.djangoproject.com/en/1....age-preference

Y leer tu post anterior.
http://www.forosdelweb.com/f130/prob...guage-1103094/

Y tal como dice la documentación puedes acceder desde request.LANGUAGE_CODE.

PD: No pongas tu código usando [CODE][HIGHLIGHT="Python"][/HIGHLIGHT][/CODE] solo usa [HIGHLIGHT="Python"][/HIGHLIGHT] porque si no tengo que andar quitando CODE en todos lados de tu post.
  #3 (permalink)  
Antiguo 11/07/2014, 15:47
Avatar de kojicomics  
Fecha de Ingreso: junio-2013
Mensajes: 49
Antigüedad: 10 años, 10 meses
Puntos: 1
Respuesta: get_language() no muestra lo que quiero

Cita:
Iniciado por razpeitia Ver Mensaje
PD: No pongas tu código usando [CODE][HIGHLIGHT="Python"][/HIGHLIGHT][/CODE] solo usa [HIGHLIGHT="Python"][/HIGHLIGHT] porque si no tengo que andar quitando CODE en todos lados de tu post.
Gracias por avisar, no lo sabía

Cita:
Iniciado por razpeitia Ver Mensaje
Y tal como dice la documentación puedes acceder desde request.LANGUAGE_CODE.
Lo que no entiendo es de dónde tengo que capturar el valor del request
  #4 (permalink)  
Antiguo 11/07/2014, 16:23
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: get_language() no muestra lo que quiero

Depende, de donde estés.

Una vista (FBV), es el primer parametro que recibes. CBS en cualquier metodo `self.request`. En el template suponiendo que lo estas haciendo bien `{{ LANGUAGE_CODE }}`
  #5 (permalink)  
Antiguo 11/07/2014, 17:16
Avatar de kojicomics  
Fecha de Ingreso: junio-2013
Mensajes: 49
Antigüedad: 10 años, 10 meses
Puntos: 1
Respuesta: get_language() no muestra lo que quiero

Necesito utilizarla en una Vista Basada en Clases. He probado a crear un método 'get_language', pero no entiendo qué parámetro debo pasar para inicializarlo:

Código Python:
Ver original
  1. class ListPosts(ListView):
  2.     '''Listar posts del blog'''
  3.     def get_language(self):
  4.         language = self.request.LANGUAGE_CODE
  5.         return(language)
  6.  
  7.     lan = get_language()
  8.     queryset = PostTranslation.objects.filter(language=lan)
  9.     context_object_name = 'posts'
  10.     template_name = 'blog/blog.html'
  11.     paginate_by = 5
  #6 (permalink)  
Antiguo 11/07/2014, 19:06
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: get_language() no muestra lo que quiero

Código Python:
Ver original
  1. class ListPosts(ListView):
  2.     '''Listar posts del blog'''
  3.     context_object_name = 'posts'
  4.     template_name = 'blog/blog.html'
  5.     paginate_by = 5
  6.     def get_queryset(self):
  7.        return PostTranslation.objects.filter(language=self.request.LANGUAGE_CODE)

Creo que es por la poca comprensión de CVB y python. Que el código que pusiste no funciona como tu esperas. Deberías de leer mas sobre clases y programación orientada a objetos en python.
  #7 (permalink)  
Antiguo 12/07/2014, 02:55
Avatar de kojicomics  
Fecha de Ingreso: junio-2013
Mensajes: 49
Antigüedad: 10 años, 10 meses
Puntos: 1
Respuesta: get_language() no muestra lo que quiero

Muchas gracias, ya funciona correctamente

Intentaré aprender todo lo que pueda sobre clases y POO. Encontré un libro llamado 'Python para todos' que parece muy completo

Etiquetas: django, multilenguaje
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:52.