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_CODEquando 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 = Truepara 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 localepara obter informações sobre o idioma.