2011-02-26 3 views
4

샘플 파이썬 프로그램 번역하지 : 오히려 호스트 OS가 설정되어있는대로 사용하는 것보다 자신의 언어를 선택 할 필요가 있으므로, CGI 스크립트에]파이썬에서 gettext -

import gettext 
gettext.install('test', "./locale") 
_ = gettext.gettext 

t = gettext.translation('test', "./locale", languages=['fr']) 
t.install() 

print _("Hello world") 

./locale/fr/LC_messages/ test.mo는 msgfmt를 .po 파일로 실행하여 생성 된 이진 파일로 변환을 포함합니다.

프로그램이 번역 된 버전 대신 "Hello world"를 인쇄합니다. 무엇이 문제 일 수 있습니까?

+0

어둠 속에서 찌르다가 대소 문자를 구분합니까? –

+0

대소 문자 차이는 실제 프로그램에 존재하지 않는 typo입니다. 수정하기 위해 질문을 편집하겠습니다. – OJW

+2

왜'.install()'(두 번) * 및 * 바인딩'_'을 사용하고 있습니까? –

답변

4

어쩌면이 답변이 너무 늦었 겠지만, 방금이 사실을 발견 했으므로 도움이 될 것 같습니다.

import gettext 

DIR = "lang" 
APP = "ToolName" 
gettext.textdomain(APP) 
gettext.bindtextdomain(APP, DIR) 
#gettext.bind_textdomain_codeset("default", 'UTF-8') # Not necessary 
locale.setlocale(locale.LC_ALL, "") 
LANG = "FR_fr" 


lang = gettext.translation(APP, DIR, languages=[LANG], fallback = True) 
_ = lang.gettext 

참고 :

내 프로그램이에 LANG 디렉토리가 내 자신을 programm에서

import gettext 

t = gettext.translation('test', "./locale", languages=['fr']) 
_ = t.gettext 

print _("Hello world") 

, 나는 이런 식으로했다. 디렉토리가 에서 만든 모든 언어의 경우 : 디렉토리 en_US 내부 * 여기서, xx_XX * ( en_US) LC_MESSAGES가, 내부가 TOOLNAME.mo

입니다하지만 그건 교차 언어에 대한 내 방법입니다.