2012-01-25 1 views
4

다국어 장고 - CMS 프레임 워크에서 전형적인 language_chooser,이 같은 언어가 표시 출력은장고-CMS를 language_chooser는

English Deutsch Nederlands 

페이지에서 더 쉽게 찾을 수 있습니까?

답변

10

있지만, 그것은 다른 질문에 대한 대답이 아니라 하나있었습니다.

진짜 대답은 같은 그 기본 형태를 포함하는 설정에서 언어 목록을 변경하는 것입니다 :

LANGUAGES = (
    ('de', u'Deutsch'), 
    ('en', u'English'), 
    ('nl', u'Nederlands'), 
    ('es', u'Español'), 
    ('fr', u'français'), 
    ('jp', u'日本語'), 
) 

나는 우리가 무슨 일을하는지 더 명확하게 몇 가지를 추가했습니다.

네이티브 방식으로 항상 언어를 표시하고 싶기 때문에 번역 할 필요가 없으므로 ugettext() 래퍼가 필요하지 않습니다. 당신은 당신의 설정 파일의 첫 번째 행이 있는지 확인하려면 :

# -*- coding: utf-8 -*- 

모든 파이썬으로 올바르게 해석되어 있는지 확인하십시오.

이 연습을위한 훌륭한 소스가 여기에 있습니다 : http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes

5

번역해야 할 언어 목록 일뿐입니다. 그런 다음 위의 스 니펫은 그대로 정상적으로 유지되어야합니다.

ugettext = lambda s: s 

LANGUAGES = (
    ('de', ugettext('German')), 
    ('en', ugettext('English')), 
    ('nl', ugettext('Dutch')), 
    ) 

때문에 다음 설치 것 당신이 가지고있는 코드 템플릿을 번역해야 당신의 로케일 파일의 번역 된 문자열 : 설정에서 어디 당신은 다음과 비슷한 모습이 될 것입니다 언어를 나열합니다.

내 언어 변경은 다음과 같습니다 : @ mongoose_za의 대답은 철저하고 유용

{% load i18n %} 
{% trans 'Change language' %} 
<form action="/i18n/setlang/" method="post" style="display: inline;">{% csrf_token %} 
    <div style="display: inline;"> 
     <select name="language" onchange="javascript:form.submit()"> 
      {% for lang in LANGUAGES %} 
       <option value="{{ lang.0 }}"{% ifequal LANGUAGE_CODE lang.0 %} selected="selected"{% endifequal %}>{{ lang.1 }}</option> 
      {% endfor %} 
     </select> 
    </div> 
</form> 
+2

이 문제가 해결되지 않는다고 생각합니다. LANGUAGES 설정에서 언어를 번역하면 현재 사용중인 언어로 모든 언어를 표시합니다. OP는 이것을 원하지 않습니다. 그는 자신의 기본 철자로 항상 언어를 표시하려고합니다. – mbrochh

+0

안녕하세요, 내 관리자 페이지에 있습니다. 내가 선택,하지만 옵션을 볼 수 ... 왜'LANGUAGES'는 나를 위해 비어 있습니까? –