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.
- 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 <barbier@linuxfr.org>
Martin Quinson (mquinson#debian.org)
Robert Luberda <robert@debian.org>