developer tip

장고에서 현재 언어를 얻는 방법은 무엇입니까?

copycodes 2020. 10. 13. 07:57
반응형

장고에서 현재 언어를 얻는 방법은 무엇입니까?


모델 또는 관리자의 현재 스레드에서 현재 언어를 얻으려면 어떻게해야합니까?


특히 관심있는 함수는 django.utils.translation.get_language()현재 스레드에서 사용되는 언어를 반환합니다. 설명서를 참조하십시오 .


또는 당신의 견해에서 이것을 얻을 수 있습니다

request.LANGUAGE_CODE

언어를 얻기 위해 사용하는 방법에주의하십시오 . 어떤 방법에 따라 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.get_language()하는 경우 해당 코드 섹션이 비동기 적으로 (예 : 셀러리 작업으로) 호출되는 경우이 방법은 다른 스레드에서 실행되기 때문에 작동하지 않는다는 점을 명심해야합니다.


시스템의 locale언어 정보를 읽을 수 있습니다 .


당신은 이것을 사용할 수 있습니다

from django.utils import  translation
translation.get_language()

참고 URL : https://stackoverflow.com/questions/3356964/how-i-get-the-current-language-in-django

반응형