Respostas:
As funções de interesse particular são as django.utils.translation.get_language()
que retornam o idioma usado no segmento atual. Veja a documentação .
Ou você também pode obter isso em suas visualizações
request.LANGUAGE_CODE
django.utils.translation.get_language()
django.utils.translation.get_language()
é sempre a melhor solução.
Tenha cuidado com o método que você usa para obter o idioma . Dependendo de qual método, Django usará diferentes formas e informações para determinar a linguagem correta a ser usada.
Ao usar a django.utils.translation.get_language()
função, ela está vinculada à linguagem do thread . Antes do Django 1.8, ele sempre retornava settings.LANGUAGE_CODE
quando as traduções eram desabilitadas. Se você deseja substituir manualmente a linguagem do thread, pode usar as funções override()
ou activate()
, que não são nomeadas de forma muito explícita, mas ainda são úteis:
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 você quiser django para verificar o caminho e / ou pedido (cookie de idioma, ...) , que é um monte exemplo mais comum www.example.com/en/<somepath>
vs www.example.com/fr/<somepath>
, uso django.utils.translation.get_language_from_request(request, check_path=False)
. Além disso, ele sempre retornará um idioma válido definido emsettings.LANGUAGES
Não achei muito fácil encontrar essas diferenças através do Google sobre este assunto, então aqui está para referência futura.
django.utils.translation
, não traduções. Há um erro de ortografia no link fornecido. No trecho está correto.
django.utils.translation.get_language()
e django.utils.translation.get_language_from_request(request, check_path)
. Se estiver visível, você deve usar o último com check_path = True
para obter a linguagem em que seu modelo será renderizado.
Apenas para adicionar que, se você usar django.utils.translation.get_language()
, você deve ter em mente que se essa seção de código for chamada de forma assíncrona (por exemplo, como uma tarefa de aipo), essa abordagem não funcionará devido à execução em uma thread diferente.
você pode usar isso
from django.utils import translation
translation.get_language()
Você pode ler o sistema locale
para obter informações sobre o idioma.