Locale::Po4a::Po - moduł manipulujący plikami PO
use Locale::Po4a::Po;
my $pofile=Locale::Po4a::Po->new();
# Czytanie pliku PO
$pofile->read('plik.po');
# Dodanie wpisu
$pofile->push('msgid' => 'Hello', 'msgstr' => 'bonjour',
'flags' => "wrap", 'reference'=>'file.c:46');
# Wyciągnięcie tłumaczenia
$pofile->gettext("Hello"); # zwraca 'bonjour'
# Zapisanie z powrotem do pliku
$pofile->write('inny_plik.po');
Locale::Po4a::Po jest modułem pozwalającym manipulować
katalogami wiadomości. Można załadować i
zapisać plik po (którego rozszerzeniem często jest
po), można zbudować nowe wpisy w locie albo
zażądać przetłumaczenia komunikatu.
For a more complete description of message catalogs in the PO format and their
use, please refer to the info documentation of the gettext program (node
"`PO Files"').
Ten moduł jest częścią projektu po4a, którego
celem jest użycie plików PO (z założenia
przeznaczonych do ułatwienia tłumaczenia komunikatów
programu) do tłumaczenia wszystkiego, włączając
dokumentację (strony podręcznika man, strony info), opisy
pakietów, szablony debconfa i wszystkiego, co może
korzystać z tego.
-
--porefs type
- Specify the reference format. Argument type can be
one of never to not produce any reference, file to only
specify the file without the line number, counter to replace line
number by an increasing counter, and full to include complete
references (default: full).
-
--wrap-po no|newlines|number
(default: 76)
- Specify how the po file should be wrapped. This gives the
choice between either files that are nicely wrapped but could lead to git
conflicts, or files that are easier to handle automatically, but harder to
read for humans.
Historically, the gettext suite has reformatted the po files at the 77th
column for cosmetics. This option specifies the behavior of po4a. If set
to a numerical value, po4a will wrap the po file after this column and
after newlines in the content. If set to newlines, po4a will only
split the msgid and msgstr after newlines in the content. If set to
no, po4a will not wrap the po file at all. The reference comments
are always wrapped by the gettext tools that we use internally.
Note that this option has no impact on how the msgid and msgstr are wrapped,
ie on how newlines are added to the content of these strings.
-
--msgid-bugs-address adres@e-mail
- Ustawia adres, pod który należy
zgłaszać błędy w polach msgid.
Domyślnie, utworzone pliki POT nie zawierają
nagłówków Report-Msgid-Bugs-To.
-
--copyright-holder string
- Ustawia właściciela praw autorskich w
nagłówku POT. Domyślną wartością
jest "Free Software Foundation, Inc."
-
--package-name nazwa
- Ustawia nazwę pakietu w nagłówku POT.
Domyślną wartością jest
"PACKAGE".
-
--package-version wersja
- Ustawia wersję pakietu w nagłówku
pliku POT. Domyślną wartością jest
"VERSION".
- new()
- Tworzy nowy katalog wiadomości. Jeśli podano
argument, jest on nazwą pliku PO, który powinien być
załadowany.
- read($)
- Czyta plik PO (o nazwie podanej jako argument).
Wcześniej istniejące wpisy nie są usuwane, a nowe
wpisy są dodawane na końcu katalogu.
- write($)
- Zapisuje bieżący katalog do podanego
pliku.
- write_if_needed($$)
- Podobne do write, ale jeżeli pliki PO lub POT
już istnieją, to wynik zostanie zapisany do pliku
tymczasowego, który będzie porównany z
istniejącym plikiem, aby sprawdzić, czy aktualizacja jest
rzeczywiście potrzebna (pozwala to uniknąć zmieniania
pliku POT tylko po to, by zaktualizować odnośniki lub pole
POT-Creation-Date).
- filter($)
- Funkcja wyodrębnia katalog wiadomości z
istniejącego katalogu. W pliku wynikowym będą
umieszczone tylko te wpisy, do których istnieje odniesienie w
podanym pliku.
Funkcja przetwarza swoje argumenty, generuje z nich definicję funkcji
Perla, ewaluuje tę definicję i filtruje pola, dla
których ta wygenerowana funkcja zwróci wartość
true.
Czasami uwielbiam Perla ;)
- to_utf8()
- Zmienia kodowanie wpisów msgstr pliku PO do UTF-8.
Nic nie robi, jeśli w pliku PO nie jest podane kodowanie
znaków (wartość "CHARSET") albo gdy jest
ono ustawione na UTF-8 lub ASCII.
- gettext($%)
- Żąda przetłumaczenia przez
bieżący katalog komunikatu podanego jako argument.
Jeśli nie znaleziono tłumaczenia, funkcja zwróci
oryginalny (nieprzetłumaczony) komunikat.
Po komunikacie do przetłumaczenia można przekazać hasha
z dodatkowymi argumentami. Poniżej podano poprawne wpisy:
- wrap
- wartość logiczna, określająca,
czy białe znaki w tekście mają znaczenie.
Jeśli tak, to funkcja kanonizuje tekst przed wyszukaniem
tłumaczenia oraz zawija tekst wynikowy.
- wrapcol
- kolumna, w której tekst powinien być zawijany
(domyślnie: 76).
- stats_get()
- Zwraca statystyki dotyczące stosunku trafień
od ostatniego wywołania funkcji stats_clear(). Proszę
zauważyć, że to nie są te same statystyki,
które wypisuje msgfmt --statistic. Tutaj, statystyki dotyczą
bieżącego użycia pliku PO, a msgfmt podaje stan
pliku. Przykład użycia:
[klika użyć pliku PO do tłumaczenia rzeczy]
($percent,$hit,$queries) = $pofile->stats_get();
print "Do tej pory znaleźliśmy tłumaczenia $percent\% ($hit z $queries) komunikatów.\n";
- stats_clear()
- Czyści statystyki dotyczące trafienia
gettexta.
- push(%)
- Dodaje nowy wpis na koniec bieżącego
katalogu. Argumenty powinny być przekazane w hashu. Dostępne
klucze:
- msgid
- łańcuch znaków w oryginalnym
języku.
- msgstr
- tłumaczenie.
- reference
- wskazanie, gdzie dany komunikat został znaleziony.
Przykład plik.c:46 (w linii 46 pliku "plik.c"). W razie
wielokrotnych wystąpień może być to lista
rozdzielona znakami spacji.
- comment
- komentarz dodany tutaj ręcznie (przez
tłumaczy). Format jest dowolny.
- automatic
- komentarz dodany automatycznie przez program
wyciągający komunikaty. Szczegóły w opisie
opcji --add-comments programu xgettext.
- flags
- rozdzielona spacjami lista wszystkich zdefiniowanych flag
dla tego wpisu.
Poprawne flagi: c-text, python-text, lisp-text,
elisp-text, librep-text, smalltalk-text,
java-text, awk-text, object-pascal-text,
ycp-text, tcl-text, wrap, no-wrap i
fuzzy.
Ich znaczenie można znaleźć w dokumentacji pakietu
gettext.
- type
- jest to w większości argument
wewnętrzny używany podczas przekształcania
dokumentów do formatu gettext. Ideą jest przetworzenie do
obiektu PO zarówno oryginału, jak i tłumaczenia,
scalenie ich, używając msgid jednego jako msgstr drugiego i
msgid drugiego jako msgstr pierwszego. Aby mieć
pewność, że wszystko jest OK, każdy msgid w
obiekcie ma przypisany typ, oparty na strukturze dokumentu (jak
"chap", "sect1", "p" w formacie DocBook).
Jeśli typy komunikatów nie są takie same, oznacza to,
że struktura obu plików jest różna i proces
kończy się błędem.
Ta informacja jest zapisywana jako automatyczny komentarz w pliku PO,
ponieważ dostarcza tłumaczom kontekstu o komunikatach,
które tłumaczą.
- wrap
- wartość logiczna, określająca,
czy białe znaki mogą być scalane. Jeśli tak,
komunikat przed użyciem będzie ujednolicony.
Ta informacja jest zapisywana do pliku PO z użyciem flagi wrap
lub no-wrap.
- wrapcol
- kolumna, w której tekst powinien być zawijany
(domyślnie: 76).
Ta informacja nie jest zapisywana w pliku PO.
- count_entries()
- Zwraca liczbę wpisów w katalogu (nie
licząc nagłówka).
- count_entries_doc()
- Zwraca liczbę wpisów w dokumencie. Komunikaty
pojawiające się wiele razy w tym dokumencie
będą policzone wiele razy.
- msgid($)
- Zwraca msgid o zadanym numerze.
- msgid_doc($)
- Zwraca msgid znajdujące się w dokumencie na
podanej pozycji.
- type_doc($)
- Returns the type of the msgid with the given position in
the document. This is probably only useful to gettextization, and it's
stored separately from {$msgid}{'type'} because the later location may be
overwritten by another type when the $msgid is duplicated in the master
document.
- get_charset()
- Returns the character set specified in the PO header. If it
hasn't been set, it will return "UTF-8".
- set_charset($)
- This sets the character set of the PO header to the value
specified in its first argument. If you never call this function (and no
file with a specified character set is read), the default value is left to
"UTF-8". This value doesn't change the behavior of this module,
it's just used to fill that field in the header, and to return it in
get_charset().
Denis Barbier <[email protected]>
Martin Quinson (mquinson#debian.org)
Robert Luberda <[email protected]>