Django 다국어 - 어떤 언어에서 콘텐츠를 미리 볼 수 있습니까?
-
29-09-2020 - |
문제
Django 기반 웹 사이트에 장고 다국어를 사용하고 있습니다.이 방법을 반환하려면 모델을위한 __unicode__
함수를 정의 할 때 :
def __unicode__(self):
return unicode(self.title)
.
그러나 내 기본 언어는 영어이고 나는 네덜란드어에만 삽입되는 항목이 있습니다.전체 목록을 미리 볼 때 "없음"제목으로 "없음"이됩니다.
영어 제목을 얻으려면 쉬운 방법이 있고 미리보기를 위해 다른 언어로 제목을 확인하십시오.
해결책
모든 번역을 반복하는 것은 다음과 같이 쉽게 수행 할 수 있습니다.
>>> translations = [getattr(obj, "name_" + lang[0].replace("-","_")) for lang in
settings.LANGUAGES]
.
여기서 obj 는 모델 객체이고 lang 은 설정 파일에서 튜플 ( 'bg', 'bulgarian')을 나타냅니다.
lang [0] .replace ( "-", "_") 은 "uk-gb"와 같은 언어가있는 경우 해당 값이 NAME_UK_GB
다른 팁
GreenCheDetagcode라는 속성에 모델을 저장할 수 있으므로이 작업을 수행 할 수 있습니다.
def __unicode__(self):
# If we've got an English title, use that
if self.title:
return self.title
# Otherwise, default to the Dutch title
return self.dutch_title
.
"일부 항목이 네덜란드어에만 삽입 된 것"이 의미하는 바를 알지 못하면 질문에 더 유용하게 대답하기가 약간 어렵습니다.
사용중인 앱 (예 : Django-Multilingual)에 따라 다음을 사용할 수 있습니다.
<td>{{ object.name_en|escape }}</td>
.
이 앱의 다른 포크가 있었기 때문에 다음과 같이 해결을 변경하는 데 사용되는 다른 포크가있었습니다.
Objec title is: {{object.en.name}}
.
해당 필드 이름을위한 마법의 getter가 있고 흥미로운 것을 틀림없이 볼 수없는 경우, 당신이 선호하는 L18N 앱의 코드를 참조하고 후드 아래에서가는 것을 볼 수 있습니다 :)