.\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .if !\nF .nr F 0 .if \nF>0 \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} .\} .\" ======================================================================== .\" .IX Title "PO4A-RUNTIME 7" .TH PO4A-RUNTIME 7 "2018-06-07" "Herramientas de po4a" "Herramientas de po4a" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NOMBRE" .IX Header "NOMBRE" po4a\-runtime \- po4a y traducción gettext en tiempo de ejecución sin Autotools .SH "Introducción" .IX Header "Introducción" Gracias a \fIpo4a\-build\fR, \fIpo4a\fR permite también añadir las traducciones de mensajes de salida de scripts en tiempo de ejecución usando gettext. Ademas, se hace sin necesidad de integrar Autotools y el típico proceso \&\fI./configure\fR en el paquete. .PP Usando secciones de ejemplo de \fIMakefile\fR, los paquetes pueden usar \&\fIintltool\fR con el mínimo esfuerzo. .SH "Diseño" .IX Header "Diseño" La documentación de la traducción \s-1NO\s0 debería usar el mismo directorio \fIpo/\fR que las traducciones de mensajes en tiempo de ejecución. Aunque la traducción de mensajes en tiempo de ejecución puede usar otros directorios aparte de \fIpo/\fR, habitualmente es más sencillo seguir el uso convencional. .SH "Varios lenguajes" .IX Header "Varios lenguajes" Sólo un apunte acerca de paquetes que usan scripts en varios lenguajes de programación. Una mezcla común es Perl y el intérprete de consola. Nota: gettext se equivocará y omitirá cadenas de uno u otro lenguaje, a menos que use extensiones de fichero pare el lenguaje menos problemático. .PP Al usar varios lenguajes, experimente con varias configuraciones en \&\fIpo/Makevars\fR hasta que obtenga las cadenas necesarias en el fichero \s-1POT.\s0 .PP Especificar dos lenguajes en \fIpo/Makevars\fR puede ser problemático. En lugar de: .PP .Vb 2 \& # No haga esto: \& XGETTEXT_OPTIONS = \-L Perl \-L Shell \-\-from\-code=iso\-8859\-1 .Ve .PP Considere renombrar (o proporcionar uno varios enlaces simbólicos) para todos los ficheros de uno de los lenguajes implicados, y omita las opciones de «\-L» explicitas. La extensión de fichero solo tiene que existir mientras se procesa \fI/POTFILES.in\fR .PP La opción «\-\-keywords» también puede ser de utilidad. Consulte la documentación de \fBxgettext\fR(1). .SH "Llenar «po/»" .IX Header "Llenar «po/»" Finalizando, tiene que crear su directorio \fIpo/\fR de nivel superior y después usar los ficheros de ejemplo en \fI/usr/share/doc/po4a/examples/\fR para llenarlo. .IP "\s-1LINGUAS\s0" 4 .IX Item "LINGUAS" Este campo debe estar presente, incluso vacío. Consiste de una lista de traducciones, cada línea que no empiece con un debe coincidir con un fichero \&\s-1PO\s0 ya existente. Por ejemplo, si \fI\s-1LINGUAS\s0\fR contiene una sola línea, «fr», debe tener un fichero \fIfr.po\fR junto con el fichero \fI\s-1LINGUAS\s0\fR. .Sp .Vb 5 \& $ cat po/LINGUAS \& cs \& de \& fr \& $ .Ve .Sp Por convención, el fichero \fI\s-1LINGUAS\s0\fR está organizado alfabéticamente, pero este es un proceso manual. .IP "\s-1POTFILES\s0.in" 4 .IX Item "POTFILES.in" La lista de ficheros que contienen mensajes que se traducirán en tiempo de ejecución, por ejemplo, sus scripts. De emplear el directorio \fIpo/\fR de nivel superior, las rutas tendrán que ser relativas al directorio de nivel superior, no al mismo directorio \fIpo/\fR. .Sp .Vb 11 \& $ ls \-l \& mi_script.pl \& otro.pl \& foo/compatibilidad.pl \& po/ \& po/POTFILES.in \& $ cat po/POTFILES.in \& mi_script.pl \& otro.pl \& foo/compatibilidad.pl \& $ .Ve .Sp Note that it is explicitly supported that the scripts themselves can contain strings for both runtime and documentation translation, e.g. using gettext functions for runtime and embedded \s-1POD\s0 content for documentation. So it is not a problem to have the same file listed in \fIpo/POTFILES.in\fR and \&\fIdoc/po4a\-build.conf\fR. .IP "Makevars\-perl.example" 4 .IX Item "Makevars-perl.example" Si sus scripts están escritos en Perl, copie este fichero de ejemplo como \&\fIpo/Makevars\fR y configúrelo según sus necesidades. .IP "Makevars\-shell.example" 4 .IX Item "Makevars-shell.example" Si sus scripts son de intérprete de órdenes, copie este fichero de ejemplo como \fIpo/Makevars\fR y configúrelo según sus necesidades. .IP "po4a\-build.make" 4 .IX Item "po4a-build.make" Copie este fichero de ejemplo como \fIpo/Makefile\fR. No debería necesitar edición, pero puede que desee mantenerlo actualizado en relación a \&\fI/usr/share/doc/po4a/examples/po4a\-build.make\fR ya que puede que se necesite actualizar de una publicación de po4a a otra a medida que la compatibilidad subyacente con intltools cambia (el fichero en sí mismo se generó de otro proyecto usando Autotools e intltool). .SH "Construir" .IX Header "Construir" Necesita añadir estas partes a su «Makefile» de nivel superior, o a cualquier otro método que use para preparar las fuentes para su distribución. .PP .Vb 2 \& clean: \& $(MAKE) \-C po/ clean \& \& install: \& $(MAKE) \-C po/ install DESTDIR=$(DESTDIR) \& \& dist: \& $(MAKE) \-C po/ pot .Ve .PP (En un proyecto con Autotools, esto ocurre automáticamente si añade \fIpo\fR al valor de <\s-1SUBDIRS\s0> en .) .SH "Actualización" .IX Header "Actualización" La traducción en tiempo de ejecución no es tan sencilla como con \&\fIpo4a\-build\fR, ya que necesita editar \fIpo/LINGUAS\fR para añadir una nueva traducción. Pero aparte de esto, actualizar traducciones es tan fácil como reemplazar el fichero \s-1PO\s0 relevante con la nueva versión. .PP Dependiendo de como prepare su fichero tar de fuentes, puede que también necesite listar los nuevos ficheros \s-1PO\s0 en el fichero \fI\s-1MANIFEST\s0\fR o añadir el o los scripts que preparan el archivo tar (esto también afecta a \&\fIpo4a\-build\fR). .PP Puede borrar todo fichero \fI*.mo\fR o \fI*.gmo\fR del directorio \fIpo/\fR. .SH "Copyright" .IX Header "Copyright" Aunque los ficheros de ejemplo sean parte del proyecto po4a, es libre de usar, modificar o distribuir los mismos en sus proyectos sin necesidad de mencionar po4a o incluir al equipo de po4a en sus notas de derechos de autor, al igual que con otras herramientas de compilación como el mismo Automake. No pondremos objeciones si desea mencionar po4a en su proyecto. .SH "AUTORES" .IX Header "AUTORES" .Vb 1 \& Neil Williams .Ve .SH "TRADUCCION" .IX Header "TRADUCCION" .Vb 2 \& Jordi Vilalta \& Omar Campagne .Ve