PO4A.7(1) User Contributed Perl Documentation PO4A.7(1) po4a - po4a (PO for anything [PO ]) gettext . po4a . po4a . po4a? . : . , . . , , . , gettext . ( PO , ). PO . gettext . , . , . , , . , . . . , . . , , , . po4a . , . gettext . gettext, PO . gettext , . po4a . , . . . . . : man ( ) . po4a . Locale::Po4a::Man(3pm) mdoc BSD man ( Linux ). AsciiDoc ( ) . , git . man po4a. , Locale::Po4a::AsciiDoc. pod ( ) Perl Online Documentation . Perl . . , . po4a. , Locale::Po4a::Pod. sgml ( ) XML , . . . diff . , po4a . DebianDoc DocBook DTD , . po4a SGML DTD . Locale::Po4a::Sgml(3pm) . TeX / LaTeX ( ) LaTeX . Locale::Po4a::LaTeX(3pm) Python , . text ( ) Text , Markdown, fortunes, YAML , debian/changelog, debian/control. , , . Locale::Po4a::Text(3pm) . xml XHMTL ( ) XML . po4a DocBook DTD ( Locale::Po4a::Docbook(3pm) ) XHTML. BibTex ( ) BibTex LaTex (). , Locale::Po4a::BibTex. Docbook ( ) XML . , Locale::Po4a:Docbook. Guide XML ( ) XML . Gentoo Linux 2016 ( Wayback Machine). Gentoo DevBook XML . , Locale::Po4a:Guide. Wml ( ) Web Markup Language, WML WAP . Xhtml , XmL . , . Yaml ( ) JSON. YAML . YAML Ansible Red Hat. , Locale::Po4a::Yaml. RubyDoc ( ) Ruby Document (RD), Ruby Ruby RDoc 2002. . Ruby RD. , Locale::Po4a::RubyDoc. Halibut ( ) TeX, debiandoc-sgml, TeXinfo , , PuTTY. , Locale::Po4a:Halibut. Ini ( ) MS-DOS . , Locale::Po4a::Ini. texinfo ( ) GNU ( GNU ). Locale::Po4a::Texinfo(3pm) po4a . . gemtext ( ) The native plain text format of the Gemini protocol. The extension ".gmi" is commonly used. Support for this module in po4a is still in its infancy. If you find anything, please file a bug or feature request. org (very highly experimental parser) The document format used by the Org mode. Support for this module in po4a is still in its infancy. If you find anything, please file a bug or feature request. vimhelp (very highly experimental parser) The format used for Vim help files (and some third-party plugin documentation). Support for this format in po4a is still in its infancy. If you find anything, please file a bug report or feature request. simplepod (very highly experimental parser) Similar to the previously mentioned pod, this one adopts the new Pod::Simple as its parser. Since it is newly created, some bugs are expected. If you notice any strange behavior, please let us know. Eventually, this module will replace pod. Po4a can also handle some more rare or specialized formats, such as the documentation of compilation options for the 2.4+ Linux kernels (Locale::Po4a::KernelHelp) or the diagrams produced by the dia tool (Locale::Po4a::Dia). Adding a new format is often very easy and the main task is to come up with a parser for your target format. See Locale::Po4a::TransTractor(3pm) for more information about this. , po4a . po4a. , (deb rpm), , , wine . po4a po4a . , po4a(1). po4a . po4a po4a(1) po4a. , . In the following schema, master.doc is an example name for the documentation to be translated; XX.doc is the same document translated in the language XX while doc.XX.po is the translation catalog for that document in the XX language. Documentation authors will mostly be concerned with master.doc (which can be a manpage, an XML document, an AsciiDoc file, etc); the translators will be mostly concerned with the PO file, while the end users will only see the XX.doc file. "[po4a po]" po4a , "{ .doc}" . master.doc | V +<-----<----+<-----<-----<--------+------->-------->-------+ : | | : {translation} | {update of master.doc} : : | | : XX.doc | V V (optional) | master.doc ->-------->------>+ : | (new) | V V | | [po4a-gettextize] doc.XX.po -->+ | | | (old) | | | | ^ V V | | | [po4a updates po] | V | | V translation.pot ^ V | | | doc.XX.po | | | (fuzzy) | {translation} | | | | ^ V V | | {manual editing} | | | | | V | V V doc.XX.po --->---->+<---<-- doc.XX.po addendum master.doc (initial) (up-to-date) (optional) (up-to-date) : | | | : V | | +----->----->----->------> + | | | | | V V V +------>-----+------<------+ | V [po4a updates translations] | V XX.doc (up-to-date) , . po4a(1) . po4a-gettextize(1) po4a . , PO . ( , po4a-gettextize(1) ), . , . , . : . , ,,fuzzy" . . , , PO . GNOME Translation Editor, KDE- Lokalize poedit, weblate pootle. PO , . , gettext . po4a .doc doc.XX.po . , . , . . . , po4a . , po4a . , . po4a(1). , . , , , po4a-gettextize po4a . ( man ), po4a , . , po4a PO . po4a "--no-translations" ( PO ) "--no-update" PO ( ). po4a-updatepo po4a-translate ( ,, " ). :). , . , . po4a, , . , , . , ( -- ) . PO4A-HEADER:, = . , . PO4A-HEADER: mode=eof . XML " ". PO4A-HEADER: position=About this document; mode=after; endboundary= , , po4a "position" ( ). po4a . , , . PO4A-HEADER: position=A propos de ce document; mode=after; endboundary= "position", po4a "position" "endboundary". ( endboundary, . ). : PO4A-HEADER: position=About this document; mode=after; beginboundary=
po4a "
" " ", , beginboundary, . . " ", po4a "
". , , "
" "
". mode "before", : "mode=before" "endboundary" , "position". "mode=before" "beginboundary" , "position". Mode | Boundary kind | Used boundary | Insertion point compared to the boundary ========|===============|========================|========================================= 'before'| 'endboundary' | last before 'position' | Right after the selected boundary 'before'|'beginboundary'| last before 'position' | Right before the selected boundary 'after' | 'endboundary' | first after 'position' | Right after the selected boundary 'after' |'beginboundary'| first after 'position' | Right before the selected boundary 'eof' | (none) | n/a | End of file o . , nroff ".fi", ".fi" endboundary, "the[ fi]le", . , endboundary : "^\.fi$". o "position" . . . PO4A-HEADER: position=About this document; mode=after; beginboundary=
PO4A-HEADER: position=About this document ; mode=after; beginboundary=
o , . , XML . . o , -vv po4a. po4a . o nroff : .SH "AUTHORS" mode=after. AUTHORS position. (. ^\.SH) beginboundary. : PO4A-HEADER:mode=after;position=AUTHORS;beginboundary=\.SH o (. ,, "), position , mode=after beginboundary . PO4A-HEADER:mode=after;position=Copyright Big Dude, 2004;beginboundary=^ o , position ( . Po4a ), endboundary . "EOF", . PO4A-HEADER:mode=after;position=About this document;beginboundary=FakePo4aBoundary (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 beginboundary "/^=head1/" "NAME" ( "NOM" ), . , . NAME AUTHOR , po4a . , mode=before: PO4A-HEADER:mode=before;position=^=head1 AUTEUR ? po4a, . , . TransTractor- po4a , Locale::Po4a::TransTractor(3pm) po4a . . , PO , : PO ( ), ( , PO). : Input document --\ /---> Output document \ TransTractor:: / (translated) +-->-- parse() --------+ / \ Input PO --------/ \---> Output PO (extracted) po4a . PO, po4a-translate. , po4a-updatepo. po4a TransTractor POT ( ), msgmerge -U PO TransTractor PO . , po4a , . po4a-gettextize TransTractor-, : TransTractor , PO msgid msgid , msgstr msgid . , , po4a-gettextize(1). po4a TransTractor. , Text, Markdown AsciiDoc. TransTractor::shiftline(), . , TransTractor::translate() (1) PO (2) PO . TransTractor::pushline(). . Xml, HTML, SGML Pod SAX . ,, " POT TransTractor::translate() TransTractor::pushline(). Yaml , : YAML::Tiny . Yaml po4a : , ,,$filename:1" . SAX . BOM . , TransTractor::read() ( ), PerlIO . , , . Pod::read() Pod::parse() . TransTractor , . "<:encoding($charset)" open() perl . Po Locale::Po4a::Po(3pm) PO POT . , , , gettext() , PO . PO POT msgmerge msgfmt . po4a , : . po4a . , . , CONTRIBUTING.md . po4a po4a. , ( Merge ). o adduser (man): . o apt (man, docbook): Debian . o aptitude (docbook, svg): Debian o F-Droid (markdown): FOSS (Free and Open Source Software) . o git (asciidoc): . o Linux man (man) man , (Arch Linux, Debian , Fedora). o Stellarium (HTML): . po4a . o Jamulus (markdown, yaml, HTML): FOSS jamming . po4a. o : po4a? pouah , :) :) ? Indeed, po4a-updatepo and po4a-translate are deprecated in favor of po4a. The reason is that while po4a can be used as a drop-in replacement to these scripts, there is quite a lot of code duplication here. Individual scripts last around 150 lines of codes while the po4a program lasts 1200 lines, so they do a lot in addition of the common internals. The code duplication results in bugs occurring in both versions and needing two fixes. One example of such duplication are the bugs #1022216 in Debian and the issue #442 in GitHub that had the exact same fix, but one in po4a and the other po4a-updatepo. , . , po4a . , . , 2030. . 2030. po4a-updatepo po4a-translate . , . ( : ), . gettext? . , . poxml KDE DocBook XML. , PO , . XML , DTD. , msgid. , . po-debiandoc po4a SGML , - . , DebianDoc DTD, - DTD. xml2po.py GIMP 2004. , , , XML makefile . Sphinx , Sphinx Documentation Project gettext. , , rest markdown, . po4a ( ) gettext. gettext o , . o , , . o gettext ( po4a , ). , , - . o ( ). . o PO ( PO , Lokalize Gtranslator) . o gettext , , . : - https://docs.kde.org/stable5/en/kdesdk/lokalize/project-view.html - http://www.debian.org/intl/l10n/ , . o . o , , , . , , . o , . po4a Gtranslator Lokalize. , , + po . MS Word (TM) ( RTF) . o -- : po4a(1). o po4a : po4a-gettextize(1), po4a-updatepo(1), po4a-translate(1), po4a-normalize(1). o : msguntypot(1), po4a-display-man(1), po4a-display-pod(1). o The parsers of each formats, in particular to see the options accepted by each of them: Locale::Po4a::AsciiDoc(3pm) Locale::Po4a::Dia(3pm), Locale::Po4a::Gemtext(3pm), Locale::Po4a::Guide(3pm), Locale::Po4a::Ini(3pm), Locale::Po4a::KernelHelp(3pm), Locale::Po4a::Man(3pm), Locale::Po4a::RubyDoc(3pm), Locale::Po4a::Texinfo(3pm), Locale::Po4a::Text(3pm), Locale::Po4a::Xhtml(3pm), Locale::Po4a::Yaml(3pm), Locale::Po4a::BibTeX(3pm), Locale::Po4a::Docbook(3pm), Locale::Po4a::Halibut(3pm), Locale::Po4a::LaTeX(3pm), Locale::Po4a::Org(3pm), Locale::Po4a::Pod(3pm), Locale::Po4a::SimplePod(3pm), Locale::Po4a::Sgml(3pm), Locale::Po4a::TeX(3pm), Locale::Po4a::VimHelp, Locale::Po4a::Wml(3pm), Locale::Po4a::Xml(3pm). o : Locale::Po4a::TransTractor(3pm) ( ), Locale::Po4a::Chooser(3pm), Locale::Po4a::Po(3pm), Locale::Po4a::Common(3pm). CONTRIBUTING.md. Denis Barbier Martin Quinson (mquinson#debian.org) perl v5.42.0 2025-11-22 PO4A.7(1)