Provided by:
po4a_0.41-1ubuntu1_all 
po4a ?
po4a
po4a po4a
master.doc translation.doc .pod, .xml, .sgml
master.doc
|
V
+<-----<----+<-----<-----<--------+------->-------->-------+
: | | :
{} | { master.doc } :
: | | :
XX.doc | V V
() | master.doc ->-------->------>+
: | () |
V V | |
[po4a-gettextize] doc.XX.po--->+ | |
| () | | |
| ^ V V |
| | [po4a-updatepo] |
V | | V
translation.pot ^ V |
| | doc.XX.po |
| | (fuzzy) |
{ } | | |
| ^ V V
| | {} |
| | | |
V | V V
doc.XX.po --->---->+<---<---- doc.XX.po addendum master.doc
() () () ()
: | | |
: V | |
+----->----->----->------> + | |
| | |
V V V
+------>-----+------<------+
|
V
[po4a-translate]
|
V
XX.doc
()
po4a () po4a
{} po4a
?
po4a
po4a
- <master.doc> <translation.pot> (gettext ) po4a-gettextize
$ po4a-gettextize -f <format> -m <master.doc> -p <translation.pot>
<format> master.doc translation.pot po4a-gettextize(1)
- POT doc.XX.po (XX ISO639 : fr) XX.po PO
Emacs PO mode Lokalize (KDE )Gtranslator (GNOME ) vi
gettext-doc gettext
?
po4a-translate(1) (XX )
$ po4a-translate -f <format> -m <master.doc> -p <doc.XX.po> -l <XX.doc>
<format> master.doc -p PO XX.doc
po4a-translate(1)
po4a ?
master.doc po4a-updatepo(1)
$ po4a-updatepo -f <format> -m <new_master.doc> -p <old_doc.XX.po>
( po4a-updatepo(1) )
PO PO "fuzzy" po4a-translate PO
fuzzy PO
po4a ?
master.doc diff po4a po4a gettext
()po4a
VCS
gettext ( ;)
Perl gettext 1 2MB
XX.doc master.doc translation.pot PO doc.XX.po gettext
$ po4a-gettextize -f <format> -m <old_master.doc> -l <XX.doc> -p <doc.XX.po>
po4a PO
po4a "fuzzy"
gettext : ? po4a-gettextize PO gettextization.failed.po
-
- PO gettext
- PO
- (2 1 ) po4a ;)
- POD man
POD =item item 2 1
- gettextization.failed.po
- po4a gettextization.failed.po gettext po4a
PO
2 2
2 ("I'm different" )gettext (fuzzy gettext fuzzy )
tips gettext PO
Perl (5.5 MB PO ) po4a-updatepo 1GHz G5 2 48 PO msgid POT
gettext
() ?
gettext po4a
(1 Perl)
PO4A-HEADER: (;) key=value (;)
"About this document" "About this translation"
position ()
()
position point insertion point position point po4a (position
point )
position point insertion point mode, beginboundary, endboundary
position=<title>About this document</title>
mode ()
before after position point
mode=after
beginboundary (mode=after )
endboundary ()
mode=after insertion point position point ! position point
???boundary () beginboundary endboundary
endboundary=</section>
beginboundary=<section>
</section> <section>
( </section> ) (man ) boundary insertion point boundary
insertion point
SGML "About this document" "About this translation"
PO4A-HEADER: mode=after; position=About this document; endboundary=</section>
PO4A-HEADER: mode=after; position=About this document; beginboundary=<section>
nroff
.SH "AUTHORS"
position beginboundary ( ^\.SH) position point beginboundary
PO4A-HEADER:mode=after;position=AUTHORS;beginboundary=\.SH
("Copyright Big Dude" ) position beginboundary
PO4A-HEADER:mode=after;position=Copyright Big Dude, 2004;beginboundary=^
position ( 1 po4a ) endboundary "EOF"
PO4A-HEADER:mode=after;position=<title>About</title>;beginboundary=FakePo4aBoundary
nroff
.fi
.fi endboundary "the[ fi]le" endboundary ^\.fi$
-vv
(POD )
|=head1 NAME
|
|dummy - a dummy program
|
|=head1 AUTHOR
|
|me
()( "TRADUCTEUR" "TRANSLATOR""moi" "me" )
|PO4A-HEADER:mode=after;position=AUTEUR;beginboundary=^=head
|
|=head1 TRADUCTEUR
|
|moi
AUTHOR
PO4A-HEADER:mode=after;position=NOM;beginboundary=^=head1
"NAME" ( "NOM") beginboundary /^=head1/
?
po4a 3 2 (po4a-updatepo po4a-translate) PO
po4a(1) (PO POT)? ? ? ?
po4a(1) PO PO
po4a
po4a (-o )
/ / lib/Locale/Po4a/ PERLLIB PERL5LIB lib
PERLLIB=$PWD/lib po4a --previous po4a/po4a.cfg
: lib
?
po4a
?
po4a (Perl ?)TransTractor
PO 2 PO () ( PO )
-\ /--->
\ TransTractor:: / ()
+-->-- parse() --------+
/ \
PO ---------/ \---> PO
()
po4a PO po4a-gettextize PO po4a-translate
TransTractor::parse() <p>
1 sub parse {
2 PARAGRAPH: while (1) {
3 $my ($paragraph,$pararef,$line,$lref)=("","","","");
4 $my $first=1;
5 while (($line,$lref)=$document->shiftline() && defined($line)) {
6 if ($line =~ m/<p>/ && !$first--; ) {
7 $document->unshiftline($line,$lref);
8
9 $paragraph =~ s/^<p>//s;
10 $document->pushline("<p>".$document->translate($paragraph,$pararef));
11
12 next PARAGRAPH;
13 } else {
14 $paragraph .= $line;
15 $pararef = $lref unless(length($pararef));
16 }
17 }
18 return; # Did not got a defined line? End of input file.
19 }
20 }
6 2 <p> (7 ) paragraph push 9 <p> push
translate() PO () PO () pushline()
? po4a 20
Locale::Po4a::TransTractor(3pm)
gettext : ?
N N 4 () 4 ()
po4a PO PO PO PO po4a ()4
( diff )
fuzzy
: ?
position mode=before boundary endboundary beginboundary
FAQ
? po4a <po4a-devel@lists.alioth.debian.org>
?
po4a ()
o
o
o KDE
o PO po4a
o
() ?
()
Locale::Maketext::TPJ13(3pm) man (Perl ) ( 10 5 )
() ?
gettext debconf ( Debian ) ( 1 )
debconf XML
<section>
<title lang="en">My title</title>
<title lang="fr">Mon titre</title>
<para>
<text lang="en">My text.</text>
<text lang="fr">Mon texte.</text>
</para>
</section>
PO PO ()
o
?diff PO ;)
o
(: ) UTF
()
gettext
gettext !
gettext ?
2
poxml
KDE DocBook XML PO
XML DTD msgid
po-debiandoc
Denis Barbier po4a SGML DTD DebianDoc DTD
po4a () gettext
3 ( 2 ) (po4a )po4a
po4a SGML
| *****************************************************
| * GENERATED FILE, DO NOT EDIT *
| * THIS IS NO SOURCE FILE, BUT RESULT OF COMPILATION *
| *****************************************************
|
| This file was generated by po4a-translate(1). Do not store it (in VCS,
| for example), but store the PO file used as source file by po4a-translate.
|
| In fact, consider this as a binary, and the PO file as a regular source file:
| If the PO gets lost, keeping this translation up-to-date will be harder ;)
gettext PO po/ po4a ( PO mo )po-debiandoc PO
#
# ADVISES TO DEVELOPERS:
# - you do not need to manually edit POT or PO files.
# - this file contains the translation of your debconf templates.
# Do not replace the translation of your program with this !!
# (or your translators will get very upset)
#
# ADVISES TO TRANSLATORS:
# If you are not familiar with the PO format, gettext documentation
# is worth reading, especially sections dedicated to this format.
# For example, run:
# info -n '(gettext)PO Files'
# info -n '(gettext)Header Entry'
#
# Some information specific to po-debconf are available at
# /usr/share/doc/po-debconf/README-trans
# or http://www.debian.org/intl/l10n/po-debconf/README-trans
#
gettext
o
o
o gettext (po4a )
o ( :)
o PO (Emacs PO mode LokalizeGtranslator )
o gettext
- http://kv-53.narod.ru/kaider1.png
- http://www.debian.org/intl/l10n/
o
o
o
Gtranslator Lokalize SGML SGML MS Word (TM) ( RTF)
Denis Barbier <barbier,linuxfr.org>
Martin Quinson (mquinson#debian.org)