polib - zarządzanie tłumaczeniami gettext
14 July 2008
Comments
polib to moduł pythona do zarządzania tłumaczeniami gettexta - plikami *po i *mo. Potrafi na operacje odczytu/zapisu do tych plików oraz umożliwia pozyskanie informacji na temat stanu przetłumaczenia danego pliku .po, co jest przydatne przy tłumaczeniu aplikacji. Instalacja jest prosta, albo za pomocą setuptools albo z poziomu pobranej paczki:
easy_install polib python setup.py install
polib składa się z 4 klas: POFile, MOFile, POEntry i MOEntry do obsługi plików i wpisów w nich zawartych. pofile umożliwia operacje na plikach .po i zawiera m.in. następujące metody:
- to_binary() - zwróci binarną wersję pliku po (czyli plik .mo)
- save([fpath]) - zapisuje zmiany do pliku pod podaną ścieżką. Jeżeli parametr zostanie pominięty zaktualizowany zostanie używany plik po
- save_as_mofile(fpath) - zapisuje wynikowy plik mo pod podaną ścieżką
- percent_translated() -> integer - zwraca procentowy udział przetłumaczonych fraz
- translated_entries() -> list - zwraca listę przetłumaczonych fraz
- untranslated_entries() -> list - zwraca listę nieprzetłumaczonych fraz
- fuzzy_entries() -> list - zwraca listę tzw. "fuzzy" fraz (np. automatycznie uzupełnionych przez gettexta)
- charset() -> string - zwraca kodowanie pliku lub None w przypadku braku deklaracji kodowania
- header - zwraca łańcuch zawierający nagłówek pliku .po
- metadata - zwraca słownik z metadanymi
- msgid - zwraca łańcuch z frazą do przetłumaczenia (msgid)
- msgid_plural - zwraca łańcuch z potoczną wersją frazy do przetłumaczenia
- msgstr - zwraca łańcuch z przetłumaczoną frazą
- msgstr_plural - zwraca słownik zawierający wszystkie potoczne (plural) tłumaczenia frazy
- comment - zwraca łańcuch z wygenerowanym komentarzem
- tcomment - zwraca łańcuch z komentarzem tłumacza
- flags - zwraca listę z flagami frazy (np. fuzzy, c-format)
Przykładowy kod
Poniższy kod wyświetli dane na temat danego pliku .po:import polib
po = polib.pofile('a.po')
print po.percent_translated()
print po.charset()
print po.metadata
import polib
po = polib.pofile('a.po')
for i in po:
print i.comment
print i.tcomment
print i.msgid
print '-------------------'
# -*- coding: utf-8 -*-
import polib
po = polib.pofile('a.po')
# wywalamy flagi.. tak dla przykładu
for i in po:
print i.flags
i.flags = []
po.save()
# dodajemy komentarz do każdej nieprzetłumaczonej frazy
for i in po.untranslated_entries():
i.tcomment = 'Przetłumaczyć to natychmiast!'
po.save()
RkBlog
Comment article