모델 또는 관리자의 현재 스레드에서 현재 언어를 얻으려면 어떻게해야합니까?
답변:
또는 당신의 견해에서 이것을 얻을 수 있습니다
request.LANGUAGE_CODE
django.utils.translation.get_language()
django.utils.translation.get_language()
항상 더 나은 해결책 이라고 생각합니다 .
언어를 얻기 위해 사용하는 방법에주의하십시오 . 어떤 방법에 따라 Django는 사용할 올바른 언어를 결정 하기 위해 다른 방법과 정보 를 사용합니다.
django.utils.translation.get_language()
함수를 사용할 때 스레드 언어에 연결 됩니다. Django 1.8 이전 settings.LANGUAGE_CODE
에는 번역이 비활성화되었을 때 항상 반환 되었습니다. 스레드 언어를 수동으로 재정의하려면 override()
또는 activate()
함수를 사용할 수 있습니다. 이는 명시 적으로 이름이 지정되지는 않았지만 여전히 유용합니다.
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
django가 경로 및 / 또는 요청 (언어 쿠키, ...) 을 확인하기를 원하면 (언어 쿠키, ...) 훨씬 더 일반적입니다 (예 : www.example.com/en/<somepath>
vs www.example.com/fr/<somepath>
) django.utils.translation.get_language_from_request(request, check_path=False)
. 또한 항상 유효한 언어 세트를 반환합니다.settings.LANGUAGES
이 주제에 대해 Google을 통해 이러한 차이점을 찾는 것이 그리 쉽지 않다는 것을 알았습니다.
django.utils.translation
번역 이 아니라입니다. 제공된 링크에 잘못된 철자가 있습니다. 스 니펫에서는 정확합니다.
django.utils.translation.get_language()
과 (과) 의 차이는 +1입니다 django.utils.translation.get_language_from_request(request, check_path)
. 보기에, 당신은 후자를 사용해야하는 경우 check_path = True
. 귀하의 템플릿을 렌더링 얻을 것이다 언어 얻을
당신은 이것을 사용할 수 있습니다
from django.utils import translation
translation.get_language()
시스템의 locale
언어 정보를 읽을 수 있습니다 .