2010-05-26 21 views
10

Python tabanlı Babel gettext yardımcı programlarıyla, .pot dosyasındaki çeviriler arasında çevirmen yorumları ve eski ("eski") çeviriler (#~ ile işaretli) .po dosyalarındaki güncelleştirmelerde korunacak teknikler var mı?Babel'in Kullanımı: Çevirmen yorumları (ve eski çeviriler) GNU gettext PO dosyalarında nasıl korunur?

Eski bir çeviri ilk kez bir .po dosyasında ve pybabel update çalıştırıldığında, çeviri #~ ile işaretlenmiştir. Bu, bir yandan bir yorum olarak ele alınır ve bir çevirmen görünüp onu değiştirene kadar kullanılmaz, öte yandan kaldırılmaz, böylece bir çevirmen buna başvurabilir veya metni kopyalayabilir ondan diğer çevirilerine. Ancak, bir sonraki sefer pybabel update çalıştırılır, tüm yorumlar kalıcı olarak dosyadan kaldırılır. Bu, #~ ile işaretlenmiş çevirilerin de kaldırıldığı anlamına gelir. Örneğin

Babel sürümü 0.9.6 ve Jinja2 sürüm 2.6 ve aşağıdaki dosyalar ile:

./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 

Portekizli messages.po dosya tüm eski yorumlar kaybeder ve yalnızca içerir:

# ... 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" 

aşağıdaki komutlar çalıştırılır sonra

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

# ... similar header stuff ... 

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

Yorumlar ve eski çevirilerimi kaybetmeden çeviri dosyamı nasıl güncelleyebilirim?Bunun yerine durumda gettext utilities

gelen pybabel güncelleme kullanımını msgmerge kullanmanın

+0

Kullandığınız kitaplıkları belirtebilir ve bir örnek dosya verebilir misiniz? –

+0

@JamieCockburn Bu yardımcı olur mu? –

cevap

6

olurdu:

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

Örnek:

:

reference.pot dosya sahip

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

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

ve önceki çevirileri pt_previous.po dosyası:

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

bakmak ./pt_new.po dosyayı yapacak:

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" 

bir komut çalıştırma Bunun gibi:

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"