Come posso ottenere la lingua corrente nel thread corrente in un modello o nell'amministratore?Come ottengo la lingua corrente in django?
risposta
Le funzioni di particolare interesse sono django.utils.translation.get_language()
che restituisce la lingua utilizzata nel thread corrente. Vedi documentation.
Il link è ora rotto, dovrebbe essere [questo] (https://docs.djangoproject.com/es/1.9/ref/utils/#django.utils.translation.get_language). – LostMyGlasses
Avvertenza: * Restituisce Nessuno se le traduzioni sono temporaneamente disattivate (da deactivate_all() o quando None viene passato a override()). Prima di Django 1.8, get_language() restituiva sempre LANGUAGE_CODE quando le traduzioni erano disattivate. * – Pieter
È possibile leggere il sistema locale
per informazioni sulla lingua.
Sei moderato a -3, ma penso che la domanda sia vaga - "la lingua corrente del mio web". Non è colpa tua per aver indovinato questo significa OS. – mikemaccana
Oppure si può anche ottenere questo nel vostro punto di vista
request.LANGUAGE_CODE
Ho votato per questo (da -1 per qualche motivo). Si noti quanto segue (da http://docs.djangoproject.com/en/dev/topics/i18n/deployment/#how-django-discovers-language-preference "con la traduzione statica (senza il middleware), la lingua è nelle impostazioni .LANGUAGE_CODE, mentre con la traduzione dinamica (middleware), è in request.LANGUAGE_CODE. " –
Questo link è morto e non vedo alcun motivo per non utilizzare la soluzione accettata documentata sopra:' django.utils.translation.get_language() ' – qris
cercare di ottenere la lingua, ad esempio, i modelli non sarebbe possibile se non ci fosse ancora una richiesta. Penso che il '' 'django.utils.translation.get_language()' '' sia sempre una soluzione migliore. – Hussam
solo aggiungere che se si fa uso django.utils.translation.get_language()
allora si dovrebbe tenere a mente che se quella sezione di codice sarà chiamato in modo asincrono (ad esempio, come un sedano compito) quindi questo approccio non funzionerà a causa di esso in esecuzione in un thread diverso.
L'approccio ovvio qui sarebbe quello di passare la lingua come compito parametrico ter, quindi impostare la lingua con la traduzione.activate (lingua) – xyzman
Fare attenzione al metodo utilizzato per ottenere la lingua. A seconda del metodo, Django utilizzerà diversi modi e informazioni per determinando la lingua corretta da utilizzare.
Quando si utilizza la funzione django.utils.translation.get_language()
, è collegata alla lingua thread. Prima di Django 1.8, restituiva sempre settings.LANGUAGE_CODE
quando le traduzioni erano disabilitate. Se si desidera ignorare manualmente la lingua filo, è possibile utilizzare i override()
o activate()
funzioni, che non è molto esplicitamente nominato, ma bene, comunque utili:
from django.utils import translation
with translation.override('fr'):
print(_("Hello")) # <= will be translated inside the with block
translation.activate('fr') # <= will change the language for the whole thread.
# You then have to manually "restore" the language with another activate()
translation.activate('en') # <= change languages manually
Se vuoi Django per controllare il percorso e/o richiesta (cookie della lingua, ...), che è molto più comune ad esempio www.example.com/en/<somepath>
vs www.example.com/fr/<somepath>
, utilizzare django.utils.translation.get_language_from_request(request, check_path=False)
. Inoltre, verrà sempre restituita una lingua valida impostata in settings.LANGUAGES
Non ho trovato molto semplice trovare queste differenze tramite Google su questo argomento, quindi è qui per ulteriori riferimenti.
Si noti che è 'django.utils.translation', non traduzioni. C'è un errore di ortografia nel link fornito. Nello snippet è corretto. – J0ANMM
@ J0ANMM: grazie, corretto;) – achedeuzot
+1 per la differenza tra 'django.utils.translation.get_language()' e 'django.utils.translation.get_language_from_request (request, check_path)'. Se sei in vista, dovresti usare quest'ultimo con 'check_path = True' per ottenere la lingua in cui il tuo template verrà visualizzato. –
- 1. Come ottengo la data corrente?
- 2. Come ottengo la data corrente in Cocoa
- 3. Trovare la lingua corrente dell'utente
- 4. iOS: come ottenere la lingua dell'applicazione corrente
- 5. : come ottenere la lingua corrente dell'utente?
- 6. Ottieni la lingua corrente in C#
- 7. Come determinare la lingua di input corrente?
- 8. Modelli Django: Ottieni l'URL corrente in un'altra lingua
- 9. Ottieni lingua corrente in CultureInfo
- 10. Come cambiare la lingua dall'URL di Django?
- 11. In Python, come ottengo il frame corrente?
- 12. Come ottengo l'ora corrente solo in JavaScript
- 13. cambio lingua senza modificare la pagina corrente
- 14. Come ottengo il file corrente, la classe corrente e il metodo corrente con Python?
- 15. Come ottengo la data corrente nel formato ISO usando Perl?
- 16. Come rilevare la lingua corrente di un Joomla! sito web?
- 17. Come ottengo l'URL corrente usando smarty
- 18. Come ottengo l'Url corrente da FilterAttribute?
- 19. Come posso trovare la lingua corrente di Windows da cmd?
- 20. Progetti di lingua Go corrente
- 21. Django: lingua predefinita i18n
- 22. Django - Perché ottengo TemplateSyntaxError?
- 23. Come ottengo un formato stringa della data corrente, in python?
- 24. Come ottengo il volume/ampiezza corrente in un MediaPlayer Android?
- 25. Spring MVC: Come ottengo l'url corrente in Thymeleaf
- 26. Come ottengo l'url corrente senza parametri in Yii?
- 27. Lingua Vim: invia la parola corrente a CtrlP
- 28. NSLocale currentLocale restituisce sempre "en_US" non la lingua corrente dell'utente
- 29. Impossibile cambiare l'ambiente della lingua in Django
- 30. Come cambiare la lingua dell'app quando l'utente seleziona la lingua?
Si prega di essere specifici. "La lingua del mio web": intendi la richiesta web, il web server o cosa? – mikemaccana