Provided by:
po4a_0.40-1_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 kbabel (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 use the 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
cvs
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"
.Sp
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 cvs,
| 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 kbabelgtranslator )
o gettext
- http://kbabel.kde.org/img/previewKonq.png
- http://www.debian.org/intl/l10n/
o
o
o
gtranslator kbabel sgml
sgml MS Word (TM) ( RTF)
Denis Barbier <barbier,linuxfr.org>
Martin Quinson (mquinson#debian.org)