ugettext_lazy는 언제 사용해야 합니까?
ugettext를 사용하는 것에 대해 질문이 있고,ugettext_lazy
번역용의모델에서 사용해야 한다는 것을 배웠습니다.ugettext_lazy
뷰에 있는 동안 텍스트를 사용합니다.하지만 제가 사용해야 할 다른 장소가 있나요?ugettext_lazy
또한? 형태 정의는 어떻습니까?그들 사이에 성능 차이가 있습니까?
편집: 그리고 한 가지 더 있습니다.때때로, 대신에.ugettext_lazy
,ugettext_noop
사용됩니다.문서에 나와 있듯이,ugettext_noop
문자열은 번역을 위해 표시되고 사용자에게 표시되기 전에 가능한 가장 늦은 순간에 번역됩니다. 하지만 여기서 저는 약간 혼란스럽습니다, 그것과 비슷하지 않나요?ugettext_lazy
그래요? 아직 결정하기가 어려운데, 모델과 형태에 어떤 것을 사용해야 할까요?
gettext()
대.gettext_lazy()
양식 또는 모델과 같은 정의에서 사용해야 합니다.gettext_lazy
왜냐하면 이 정의의 코드는 단 한 번만 실행되기 때문입니다(django의 시작에 따라 다름).gettext_lazy
문자열을 게으른 방식으로 번역합니다. 이는 예를 들어 모델의 속성 이름에 액세스할 때마다 문자열이 새로 번역됩니다. 장고가 시작된 이후로 이 모델을 다른 언어로 볼 수 있기 때문에 완전히 의미가 있습니다.
뷰 및 유사한 함수 호출에서 사용할 수 있습니다.gettext
문제 없이, 왜냐하면 매번 뷰가 호출되기 때문입니다.gettext
새로 실행되므로 항상 요청에 맞는 올바른 번역을 얻을 수 있습니다!
에 관하여gettext_noop()
브라이스가 답변에서 지적했듯이, 이 함수는 문자열을 번역을 위해 추출 가능한 것으로 표시하지만 번역되지 않은 문자열은 반환합니다.이는 변환된 문자열과 변환되지 않은 문자열의 두 위치에서 사용하는 데 유용합니다.다음 예를 참조하십시오.
import logging
from django.http import HttpResponse
from django.utils.translation import gettext as _, gettext_noop as _noop
def view(request):
msg = _noop("An error has occurred")
logging.error(msg)
return HttpResponse(_(msg))
_noop의 훌륭한 사용법은 개발자들을 위해 영어로 메시지를 기록하고 싶지만, 번역된 문자열을 뷰어에게 제시하는 것입니다.예를 들어 http://blog.bessas.me/posts/using-gettext-in-django/ 에서 확인할 수 있습니다.
유휴 버전은 문자열 대신 프록시 개체를 반환하며 일부 상황에서는 예상대로 작동하지 않습니다.예:
def get(self, request, format=None):
search_str = request.GET.get('search', '')
data = self.search(search_str)
lst = []
lst.append({'name': ugettext_lazy('Client'), 'result': data})
return HttpResponse(json.dumps(lst), content_type='application/json')
매우 마지막 줄이 JSON으로 serializeelst 개체를 시도하고 "client"에 대한 문자열 대신 프록시 개체를 가지기 때문에 실패합니다.프록시 개체를 json으로 직렬화할 수 없습니다.
언급URL : https://stackoverflow.com/questions/4160770/when-should-i-use-ugettext-lazy
'programing' 카테고리의 다른 글
딕트 값을 일치시켜 목록 내 딕트 인덱스 찾기 (0) | 2023.06.06 |
---|---|
명령행 인수를 레이크 태스크로 전달하는 방법 (0) | 2023.06.06 |
Android 도구 모음 센터 제목 및 사용자 정의 글꼴 (0) | 2023.06.01 |
루비 온 레일즈에서 세터 방법을 재정의하는 올바른 방법은 무엇입니까? (0) | 2023.06.01 |
SQL Server 연결 문자열을 설정하려면 어떻게 해야 합니까? (0) | 2023.06.01 |