Como posso obter o idioma atual no segmento atual em um modelo ou no admin?
python
django
internationalization
diegueus9
fonte
fonte
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 .fonte
Ou você também pode obter isso em suas visualizações
fonte
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 retornavasettings.LANGUAGE_CODE
quando as traduções eram desabilitadas. Se você deseja substituir manualmente a linguagem do thread, pode usar as funçõesoverride()
ouactivate()
, que não são nomeadas de forma muito explícita, mas ainda são úteis: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>
vswww.example.com/fr/<somepath>
, usodjango.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.
fonte
django.utils.translation
, não traduções. Há um erro de ortografia no link fornecido. No trecho está correto.django.utils.translation.get_language()
edjango.utils.translation.get_language_from_request(request, check_path)
. Se estiver visível, você deve usar o último comcheck_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.fonte
você pode usar isso
fonte
Você pode ler o sistema
locale
para obter informações sobre o idioma.fonte