sfondo: La vista è chiamata quando un ping di servizi di pagamento indietro un esito pagamento dietro le quinte - dopodiché ho bisogno di inviare una e-mail nella lingua giusta per confermare il pagamento e così via. Posso recuperare il codice della lingua nella richiesta dal server di pagamento e vorrei utilizzarlo insieme ai sistemi i18n di Django per determinare in quale lingua inviare le mie email.lingua impostata all'interno di una vista Django
Quindi ho bisogno di impostare la lingua del mio django app dall'interno di una vista. E poi esegui il rendering del modello e l'invio via email tutto in una volta.
l'impostazione request.session['django_language'] = lang
ha effetto solo sulla vista successiva quando eseguo il test.
C'è un altro modo per farlo?
Cheers,
Guy
Ottimo suggerimento. Mi ha aiutato a risolvere un problema abbastanza estraneo che avevo (in cui un doctest stava fallendo perché alcuni test precedenti usavano il client di prova di django, che lasciava il sistema con un valore inaspettato di locale.deactivate_all() all'inizio del doctest risolve il problema) –
Come posso usarlo, per impostare la lingua durante la registrazione dell'utente nella mia visualizzazione personalizzata? Il codice della lingua è posto nella tabella UserProfile. – robos85
Attenzione, ho corretto un bug in uno sviluppo attuale, dovuto a translation.activate: i thread sono riutilizzati tra le richieste e mantiene l'ultima lingua attivata. Questo ha portato a cose strane come l'amministrazione di django che cambia lingua tutto il tempo. Se si attiva manualmente transaction.activate, non dimenticare di utilizzare translation.deactivate dopo che tutte le stringhe sono state renderizzate (questo è ciò che LocaleMiddleware fa dopo il rendering). – vincent