2010-05-26 4 views
10

파이썬 기반의 Babel gettext 유틸리티에는 .pot 파일의 업데이트 파일 전체에 대해 .po 개의 파일에 번역기 주석과 오래된 ("구식") 번역 (#~으로 표시)을 보존하는 기술이 있습니까?바벨 사용 : GNU gettext PO 파일에서 번역자 주석 (및 오래된 번역문)을 보호하는 방법은 무엇입니까?

사용되지 않는 번역이 .po 파일에있는 첫 번째 시간, pybabel update 실행은, 번역은 #~로 표시되어 있습니다. 이것은 번역자가 번역본을보고 변경하기 전까지는 주석으로 취급되고 번역자가 사용하지 않을 때까지는 사용되지 않지만 번역자가이를 참조하거나 텍스트를 복사 할 수 있도록 제거되지 않습니다. 그것에서 다른 번역으로.

그러나 다음에 pybabel update을 실행하면 모든 주석은 파일에서 영구적으로 제거됩니다. 즉, #~으로 표시된 번역은 제거됩니다. 예를 들어

바벨 버전 0.9.6 및 Jinja2 버전 2.6과 같은 파일과 :

./babel.ini :

[jinja2: **/templates/**.html] 
encoding = utf-8 

./templates/test.html :

<html><body> 
<h1>{% trans %}My website{% endtrans %}</h1> 
</body></html> 

./i18n/pt_PT/LC_MESSAGES/messages.po :

$ pybabel extract -F babel.ini -o i18n/messages.pot . 
$ pybabel update -l pt_PT -d i18n -i i18n/messages.pot 

포르투갈 messages.po 파일이 모두 옛 의견을 상실 만이 포함되어 :

# ... header stuff generated from 
#  pybabel init -l pt_PT -d i18n -i i18n/messages.pot ... 

# Don't forget, I want to remember something about this! 
#~ msgid "My web page" 
#~ msgstr "A minha página de web" 

하면 다음 명령이 실행 된 후

./i18n/pt_PT/LC_MESSAGES/messages.po :

# ... similar header stuff ... 

#: templates/test.html:2 
msgid "My web site" 
msgstr "" 

번역 및 의견을 잃지 않고 번역 파일을 업데이트하려면 어떻게해야합니까?대신 귀하의 경우에는 gettext utilities

에서 pybabel 업데이트 사용 msgmerge를 사용

+0

사용중인 라이브러리를 지정하고 예제 파일을 제공 할 수 있습니까? –

+0

@JamieCockburn 도움이 되나요? –

답변

6

은은 다음과 같습니다

msgmerge ./i18n/pt_PT/LC_MESSAGES/messages.po ./i18n/messages.pot -o ./i18n/pt_PT/LC_MESSAGES/messages.po

예 :

:

reference.pot 파일을 가진

msgid "" 
msgstr "" 
"Content-Type: text/plain; charset=utf-8\n" 
"Content-Transfer-Encoding: 8bit\n" 

#: templates/test.html:2 
msgid "My web site" 
msgstr "" 

및 이전 번역과 pt_previous.po 파일 :

msgmerge pt_previous.po reference.pot -o pt_new.po

모양 ./pt_new.po 파일을 만들 것 :

msgid "" 
msgstr "" 
"Language-Team: \n" 
"Content-Type: text/plain; charset=utf-8\n" 
"Content-Transfer-Encoding: 8bit\n" 
"Language: pt\n" 

# Don't forget, I want to remember something about this! 
#~ msgid "My web site" 
#~ msgstr "A minha página de web" 

는 명령을 실행 이런 식으로 :

msgid "" 
msgstr "" 
"Language-Team: \n" 
"Language: pt\n" 
"Content-Type: text/plain; charset=UTF-8\n" 
"Content-Transfer-Encoding: 8bit\n" 

# Don't forget, I want to remember something about this! 
#: templates/test.html:2 
msgid "My web site" 
msgstr "A minha página de web" 
관련 문제