{"id":76,"date":"2022-08-22T08:17:05","date_gmt":"2022-08-22T13:17:05","guid":{"rendered":"http:\/\/www.illaa.org\/?page_id=76"},"modified":"2025-08-14T12:41:59","modified_gmt":"2025-08-14T17:41:59","slug":"instrans-php","status":"publish","type":"page","link":"http:\/\/www.illaa.org\/index.php\/instrans-php\/","title":{"rendered":"instrans.php"},"content":{"rendered":"<div class=\"entry\">\n<table>\n<tbody>\n<tr>\n<td>\n<h3>instrans.php &#8211; Script para Insertar Traslaciones<\/h3>\n<\/td>\n<td align=\"right\"><a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/wp\/software\/instrans-php-english\">English<\/a> | <a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/wp\/software\/software\/instrans-php\">Castellano<\/a> | <a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/wp\/software\/instrans-php-portugues\">Portugu\u00eas<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>Descargar:<\/b><br \/>\n<a href=\"https:\/\/github.com\/amosbatto\/instrans\">https:\/\/github.com\/amosbatto\/instrans<\/a><\/p>\n<p><b>Manual en castellano:<\/b><br \/>\n<a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/wp\/software\/instrans-php\/#INSTALACION\">Instalaci\u00f3n<\/a><br \/>\n<a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/wp\/software\/instrans-php\/#DESCRIPCION\">Descripci\u00f3n<\/a><br \/>\n<a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/wp\/software\/instrans-php\/#FORMATO\">Formato<\/a><br \/>\n<a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/wp\/software\/instrans-php\/#NOTAS\">Notas<\/a><br \/>\n<a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/wp\/software\/instrans-php\/#Usando_replace_ins_bilingual\">Usando \u2013replace con \u2013bilingual inserciones<\/a><br \/>\n<a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/wp\/software\/instrans-php\/#Usando_strip_ins_bilingual\">Usando \u2013strip con \u2013bilingual inserciones<\/a><br \/>\n<a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/wp\/software\/instrans-php\/#Ejemplo_con_--statusbar\">Opci\u00f3n \u2013statusbar<\/a><br \/>\n<a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/wp\/software\/instrans-php\/#Procesando_Directorios\">Procesando Directorios<\/a><br \/>\n<a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/wp\/software\/instrans-php\/#Opcion_--search\">Opci\u00f3n \u2013search<\/a><br \/>\n<a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/wp\/software\/instrans-php\/#Errores_de_Sintaxis\">Errores de sintaxis<\/a><br \/>\n<a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/wp\/software\/instrans-php\/#Valor_de_devuelto\">Valor de devuelto<\/a><br \/>\n<a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/wp\/software\/instrans-php\/#Por_que_demora_tanto\">\u00bfPor qu\u00e9 demora tanto?<\/a><br \/>\n<a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/wp\/software\/instrans-php\/#Por_que_usa_tanta_memoria\">\u00bfPor qu\u00e9 usa tanta memoria?<\/a><br \/>\n<a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/wp\/software\/instrans-php\/#EJEMPLOS_DE_USO\">Ejemplos de uso<\/a><br \/>\n<a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/wp\/software\/instrans-php\/#Ejemplo_Basico\">Ejemplo B\u00e1sico<\/a><br \/>\n<a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/wp\/software\/instrans-php\/#Ejemplo_con_--comment\">Ejemplo \u2013comment<\/a><br \/>\n<a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/wp\/software\/instrans-php\/#Ejemplo_con_--bilingual\">Ejemplo \u2013bilingual<\/a><br \/>\n<a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/wp\/software\/instrans-php\/#Ejemplo_con_--statusbar\">Ejemplo \u2013statusbar<\/a><br \/>\n<a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/wp\/software\/instrans-php\/#Ejemplo_con_--search\">Ejemplo \u2013search<\/a><br \/>\n<a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/wp\/software\/instrans-php\/#LICENCIA_Y_AUTOR\">Licencia y Autor<\/a><br \/>\n<a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/wp\/software\/instrans-php\/#DOCUMENTACION_EN_OTRAS_LENGUAS\">Documentaci\u00f3n en Otras Lenguas<\/a><\/p>\n<p><a name=\"INSTALACION\"><\/a>INSTALACI\u00d3N:<\/p>\n<p>Para usar instrans, necesita PHP 5 con interfaz de terminal (l\u00ednea de ordenes).<\/p>\n<p>MS-Windows:<br \/>\nSi se usa MS Windows, descargue php-5.X.X-Win32.zip de http:\/\/www.php.net<br \/>\nDescompactelo en un nuevo archivo donde quiere instalarlo y haga doble clic en<br \/>\nphp-5.X.X-installer.exe. Despu\u00e9s hay que a\u00f1adir PHP a su variable \u201cPath\u201d para<br \/>\nindicar donde se queda PHP. En Windows XP, vaya a Inicio-&gt;Configuraci\u00f3n-&gt;<br \/>\nPanel de control-&gt;Sistema. Bajo la pesta\u00f1a \u201cOpciones Avanzadas\u201d, haga clic en<br \/>\n\u201cVariables de Entorno\u201d y seleccione \u201cPath\u201d en la caja \u201cVariables del Sistema\u201d.<br \/>\nHaga clic en \u201cEditar\u201d y a\u00f1ada la ruta donde PHP es instalado. Por ejemplo, si<br \/>\nPHP es instalado en el directorio \u201cC:\\Archivos de Programa\\PHP5\u2033, su nueve<br \/>\n\u201cPath\u201d puede aparecerse como:<br \/>\nc:\\WINDOWS;c:\\WINDOWS\\System32;c:\\Archivos de Programa\\PHP5<\/p>\n<p>En sistemas m\u00e1s viejas, puede cambiar el Path en DOS as\u00ed:<\/p>\n<pre>echo $PATH<\/pre>\n<p>[Verifique que $PATH exista.]<\/p>\n<pre>$PATH = $PATH + \u201c;C:\\Archivos de Programa\\PHP5\u2033\r\necho $PATH<\/pre>\n<p><small>[Verifique que $PATH fuese cambiado]<\/small><\/p>\n<p>En algunos sistemas, necesita usar la variable \u201c$Path\u201d en lugar de \u201c$PATH\u201d.<\/p>\n<p>Despu\u00e9s de instalar PHP 5, descargue y descompacte <a href=\"https:\/\/github.com\/amosbatto\/instrans\/archive\/refs\/heads\/main.zip\">https:\/\/github.com\/amosbatto\/instrans\/archive\/refs\/heads\/main.zip<\/a><br \/>\nAhora puede utilizar el script <strong>instrans.php<\/strong>.<\/p>\n<p>GNU\/Linux, UNIX, Cygwin, y Mac OS X:<br \/>\nUsuarios de derivativas de UNIX deben instalar el PHP 5 del repositorio<br \/>\nde su distribuci\u00f3n. Por ejemplo, usuarios de Debian y su derivativas pueden<br \/>\ninstalarlo as\u00ed:<\/p>\n<pre>su\r\n[entregue la contrase\u00f1a de root]\r\napt-get install php5-cli\r\nexit<\/pre>\n<p>Usuarios de Ubuntu usan:<\/p>\n<pre>sudo apt-get install php5-cli<\/pre>\n<p>Despu\u00e9s de instalar PHP 5, descargue y descompacte <a href=\"https:\/\/github.com\/amosbatto\/instrans\/archive\/refs\/heads\/main.zip\">https:\/\/github.com\/amosbatto\/instrans\/archive\/refs\/heads\/main.zip<\/a><br \/>\nAhora puede utilizar el script instrans.php.<\/p>\n<p><b><a name=\"DESCRIPCION\"><\/a>DESCRIPCI\u00d3N:<\/b><\/p>\n<p>El programa instrans.php inserta frases traducidas de archivo(s) PO en otro(s)<br \/>\narchivo(s) PO. Instrans es designado para ayudar traductores de software en<br \/>\nlenguas ind\u00edgenas que tengan necesidades especiales.\u00a0 Tambi\u00e9n puede<br \/>\nser usado por traductores haciendo translaciones triling\u00fces o por<br \/>\ntraductores que quieran insertar translaciones autom\u00e1ticamente de otra lengua.<\/p>\n<p>Instrans permite que el traductor trata con tres lenguas a la misma vez en un<br \/>\narchivo PO. Eso es \u00fatil cuando se traduce lenguas en lugares donde ingl\u00e9s no<br \/>\nes el idioma predominante escrito.\u00a0 Por ejemplo, en Am\u00e9rica Latina y en \u00c1frica<br \/>\nFrancesa muchos traductores de lenguas ind\u00edgenas no pueden leer ingl\u00e9s y<br \/>\nnecesitan ver las frases en espa\u00f1ol o franc\u00e9s.\u00a0 Instrans tambi\u00e9n puede ser<br \/>\nusado para insertar frases traducidas de otra lengua cuando la traductor no<br \/>\nquiere duplicar el trabajo ya hecho en otra traducci\u00f3n. Por ejemplo, muchas<br \/>\nlenguas ind\u00edgenas utiliza muchas frases prestadas de otras lenguas,<br \/>\nespecialmente en el contexto de la inform\u00e1tica. Traductores puede utilizar<br \/>\ninstrans para insertar las frases prestadas en sus archivos PO.<\/p>\n<p>Cada objeto PO tiene el formato siguiente:<\/p>\n<pre>L\u00cdNEA-DE-ESPACIO\r\n# COMENTARIO-DE-TRADUCTOR\r\n#. COMENTARIO-AUTOM\u00c1TICO\r\n#: REFERENCIA\u2026\r\n#, BANDERA\u2026\r\nmsgid FRASE-NO-TRADUCIDA\r\nmsgstr FRASE-TRADUCIDA<\/pre>\n<p>Instrans extrae cada msgstr del TRASLACIONES-PO y lo inserta en el ORIGINAL-PO<br \/>\n(o opcionalmente en el NUEVO-PO) donde hay un msgid correspondiente.\u00a0 Si no<br \/>\nhay un msgid correspondiente, no inserta nada. Si hay m\u00e1s que un msgid<br \/>\ncorrespondiente, instrans busca lo cual tenga un comentario autom\u00e1tico o<br \/>\nreferencia equivalente. Por omisi\u00f3n instrans s\u00f3lo inserta una frase PO cuando<br \/>\nel msgstr en el ORIGINAL-PO es vac\u00edo, pero puede borrar un msgstr existente y<br \/>\ninsertar un frase PO nueva con la opci\u00f3n \u2013overwrite.\u00a0 Tambi\u00e9n hay opciones<br \/>\npara insertar las frases PO como comentarios o frases biling\u00fces o en las<br \/>\nbarras de estado. Adem\u00e1s hay una opci\u00f3n \u2013search para buscar frases<br \/>\ncorrespondientes usadas en otros programas.<\/p>\n<p><b><a name=\"FORMATO\"><\/a>FORMATO:<\/b><\/p>\n<pre>php instrans.php [OPCIONES] ORIGINAL-PO TRASLACIONES-PO [NUEVO-PO]<\/pre>\n<p>Opciones:<\/p>\n<p><tt>-m | \u2013msgstr<\/tt>\u00a0\u00a0\u00a0\u00a0 Insertar las frases traducidas en los msgstr que son vac\u00edos.<br \/>\nSi quiere reemplazar los que no son vac\u00edos, use la opci\u00f3n<br \/>\n\u2013overwrite con esta opci\u00f3n. Si no especifica el tipo de<br \/>\ninserci\u00f3n, har\u00e1 esto por omisi\u00f3n.<\/p>\n<p><tt>-b | \u2013bilingual [=SEPARADOR]<\/tt><br \/>\nPegar frases traducidas al fin de msgstr existentes para<br \/>\nformar frases biling\u00fces. Si hay un msgstr existente, se<br \/>\ndivide las dos frases por un SEPARADOR que es \u201d * \u201d por<br \/>\nomisi\u00f3n. Frases que contienen caracteres de nueva l\u00ednea (\\n)<br \/>\nser\u00e1 separado por otra nueva l\u00ednea en lugar del SEPARADOR.<\/p>\n<p><tt>-c | \u2013comment [=IDIOMA]<\/tt><br \/>\nInsertar frases traducidas como comentarios en la forma:<br \/>\n#\u00a0 [IDIOMA] \u201cFRASE-TRADUCIDA\u201d<br \/>\nSi no se espec\u00edfica el IDIOMA, por omisi\u00f3n es el nombre de<br \/>\nTRASLACIONES-PO.\u00a0 Puede combinar \u2013comment con todas las<br \/>\notras opciones. Si usa \u2013comment con \u2013statusbar, insertar\u00e1<br \/>\ncomentarios s\u00f3lo en objetos PO de la barra de estado en la<br \/>\nforma:<\/p>\n<pre>#\u00a0 [IDIOMA] MENU: \u201cFRASE-TRADUCIDA\u201d<\/pre>\n<p><tt>-s | \u2013statusbar [=FRASE-MENU FRASE-BARRA-DE-ESTADO]<\/tt><br \/>\nInsertar frases traducidas del men\u00fa en la barra del estado.<br \/>\nSi se encuentra un comentario autom\u00e1tico que contiene la<br \/>\nFRASE-MENU, busca otro objeto PO con la correspondiente<br \/>\nFRASE-BARRA-DE-ESTADO y inserta la frase traducida all\u00ed.<br \/>\nPor omisi\u00f3n FRASE-MENU es \u201cMENU\u201d y FRASE-BARRA-DE-ESTADO<br \/>\nes \u201cSTATUSBAR\u201d. Use esta opci\u00f3n con cuidado. Probablemente<br \/>\ntiene que editar a mano el archivo PO despu\u00e9s.<\/p>\n<p><tt>-o | \u2013overwrite<\/tt>\u00a0 Reemplazar frases traducidas existentes. Sin esta opci\u00f3n,<br \/>\ns\u00f3lo inserta la frase traducida cuando el msgstr es vac\u00edo.<br \/>\nSi inserta comentarios, esta opci\u00f3n no borra los<br \/>\ncomentarios de traductor excepto los que tengan la forma:<\/p>\n<pre>#\u00a0 [...] \"\u2026\"<\/pre>\n<p><tt>-r | \u2013recursive<\/tt>\u00a0 \u00a0 Procesar todos los subdirectorios en ORIGINAL-PO y<br \/>\nTRASLACIONES-PO. Esta opci\u00f3n s\u00f3lo tendr\u00e1 efecto si<br \/>\nORIGINAL-PO y TRASLACIONES-PO son directorios.<\/p>\n<p><tt>-e | \u2013search<\/tt>\u00a0\u00a0\u00a0\u00a0 Buscar frases traducidas en cualquier archivo o directorio en<br \/>\nTRASLANCIONES-PO. Use esta opci\u00f3n para encontrar frases<br \/>\ntraducidas de otros programas.<\/p>\n<p><tt>-x | \u2013strip [=CADENA]<\/tt><br \/>\nQuitar la CADENA de la frase traducida en inserciones<br \/>\n\u2013bilingual y \u2013statusbar. Si no se especifica la CADENA, los<br \/>\nsignos \u201c&amp;\u201d ser\u00e1n quitado. CADENA puede ser un expresi\u00f3n<br \/>\nPerl. Por ejemplo, -strip = \u201c\/&lt;.+&gt;\/\u201d\u00a0 quita todos los c\u00f3digos<br \/>\nHTML de la frase insertada.<\/p>\n<p><tt>-p | \u2013replace [=BUSQUEDA REEMPLAZO]<\/tt><br \/>\nReemplazar BUSQUEDA por REEMPLAZO en la frase traducida en<br \/>\ninserciones \u2013bilingual y \u2013statusbar. Si no se especifica la<br \/>\nBUSQUEDA y el REEMPLAZO, variables de programaci\u00f3n ser\u00e1<br \/>\nreemplazado por \u201c@#@x@#@\u201d. Actualmente solo C, Objective C,<br \/>\nPHP, UNIX shell, QT, gcc internal, y YCP variables son<br \/>\nreconocido.\u00a0 BUSQUEDA y REEMPLAZO pueden ser expresiones<br \/>\nPerl. Por ejemplo:\u00a0 -p = \u201c\/%([sd])\/\u201d \u201cVAR_$1\u2033<br \/>\nreemplaza \u201c%s\u201d por \u201cVAR_s\u201d y \u201c%d\u201d por \u201cVAR_d\u201d.<\/p>\n<p><tt>-v | \u2013verbose<\/tt>\u00a0\u00a0\u00a0 Mostrar avisos y m\u00e1s informaci\u00f3n.<\/p>\n<p><tt>-q | \u2013quiet<\/tt>\u00a0\u00a0\u00a0\u00a0\u00a0 No mostrar ninguna mensaje de pantalla.<\/p>\n<p><tt>-l | \u2013log [=ARCHIVO]<\/tt>\u00a0\u00a0 Desviar las mensajes de pantalla a un archivo. Si no<br \/>\nse especifica un archivo, por omisi\u00f3n es \u201cinstrans-log.txt\u201d.<\/p>\n<p><tt>-f | \u2013interface = XX<\/tt>\u00a0\u00a0 Especificar la lengua de la interfaz del usuario de<br \/>\ninstrans. Por omisi\u00f3n instrans usar\u00e1 ingl\u00e9s si no se hab\u00eda<br \/>\ntraducido en la lengua de su locale. Actualmente las \u00fanicas<br \/>\nopciones son \u201cen\u201d, \u201ces\u201d, y \u201cpt\u201d.<\/p>\n<p><tt>ORIGINAL-PO<\/tt>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 El archivo PO original o directorio. Si es un directorio va<br \/>\na procesar todo los archivos PO adentro del directorio.<\/p>\n<p><tt>TRASLACIONES-PO<\/tt>\u00a0\u00a0 El archivo PO que contiene las frases traducidas que ser\u00e1<br \/>\ninsertado en el ORIGINAL-PO (o opcionalmente en NUEVO-PO).<\/p>\n<p><tt>NUEVO-PO<\/tt>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 [opcional] Si no quiere reemplazar el ARCHIVO-PO,<br \/>\nprovea un nuevo nombre de archivo para escribir.<br \/>\nSe encierran en comillas los archivos que contienen espacios en sus nombres.<br \/>\nEjemplos:<br \/>\n<tt>php instrans.php \"c:\\mis documentos\\fr-FR.po\" es-ES.po \"fr-FR 1.po\"<\/tt><br \/>\n<tt>php \"c:\\mis documentos\\instrans.php\" -b=\" % \" es-ES.po fr-FR.po<\/tt><\/p>\n<p>Para ayuda:<br \/>\n<tt>php instrans.php -h | \u2013help | -? | \/?<\/tt><\/p>\n<p>Para m\u00e1s informaci\u00f3n y ejemplos de uso:<br \/>\n<tt>php instrans.php -i | \u2013info<\/tt><\/p>\n<p><a name=\"NOTAS\"><\/a>NOTAS:<\/p>\n<p><a name=\"Usando_replace_ins_bilingual\"><\/a><b>Usando \u2013replace con inserciones \u2013bilingual:<\/b><br \/>\nUse la opci\u00f3n \u2013bilingual con cuidado y revise archivo(s) PO despu\u00e9s. Las<br \/>\nfrases traducidas puede contener variables de programaci\u00f3n que puede causar<br \/>\nerrores cuando est\u00e1n insertado. Por ejemplo, programas escrito en C usan el<br \/>\ns\u00edmbolo %s para indicar un string (cadena de caracteres), %d para indicar un<br \/>\nintero, y %f para indicar un numero real que puede contener un punto decimal.<br \/>\nNormalmente frases PO con variables C son marcadas con la bandera:<\/p>\n<pre>#, c-format<\/pre>\n<p>Cuando se hace una frase biling\u00fce, va a duplicar el numero de variables en la<br \/>\nfrase y esto puede causar errores en el programa. Para evitar este problema,<br \/>\nuse la opci\u00f3n \u2013replace.\u00a0 Si no se especifica BUSQUEDA y REEMPLAZO, instrans<br \/>\nbusca los objetos PO con la bandera \u00ab#, LANG-format\u00bb y encierra todas las<br \/>\nvariables en \u201c@#@\u201d. Por ejemplo, \u00ab@#@s@#@\u00bb reemplaza \u00ab%s\u00bb y \u00ab@#@-10.4f@#@\u00bb<br \/>\nreemplaza \u00ab%-10.4f\u00bb.<\/p>\n<p>Si su versi\u00f3n de PHP is 5.10 o despu\u00e9s, la opci\u00f3n \u2013verbose provee una aviso<br \/>\ncada vez que una variable ha sido reemplazado. Se aconseja que utilice las<br \/>\nopciones <tt>\u2013verbose<\/tt> y <tt>\u2013log<\/tt> con <tt>\u2013bilingual<\/tt> para que tenga un registro de los<br \/>\ncambios.<\/p>\n<p>Despu\u00e9s haga una b\u00fasqueda por \u201c@#@\u201d en su archivo PO y reemplace estas frases<br \/>\ncon algo m\u00e1s apropiado en sus traslaciones. Desafortunadamente, hay muchas<br \/>\nlenguas de la computadora y instrans actualmente s\u00f3lo reconoce variables de C,<br \/>\nObjective C, PHP, UNIX shell, QT, gcc interno, y YCP.\u00a0 De todos modos, no debe<br \/>\nconfiarse mucho en las substituciones y debe revisar su archivo PO despu\u00e9s.<\/p>\n<p><a name=\"Usando_strip_ins_bilingual\"><\/a>Usando \u2013strip con inserciones \u2013bilingual:<\/p>\n<p>Muchos programas usan el s\u00edmbolo \u201c&amp;\u201d o \u201c&amp;amp;\u201d en los men\u00fas y ventanas de<br \/>\ndi\u00e1logo para subrayar el siguiente car\u00e1cter y hacerlo una tecla de acceso<br \/>\ndirecto. Si la opci\u00f3n \u2013strip es usado sin especificar la CADENA, instrans<br \/>\nquitar\u00e1 los signos \u201c&amp;\u201d de las frases insertadas. Esto es \u00fatil porque un \u00edtem<br \/>\nde men\u00fa y un objeto en un ventana de di\u00e1logo s\u00f3lo pueden tener 1 tecla de<br \/>\nacceso directo.<\/p>\n<p>Los signos \u201c&amp;\u201d son s\u00f3lo quitado si el msgstr existente es vac\u00edo. Porque \u201c&amp;\u201d es<br \/>\nmuy usado para significar \u201cy\u201d, s\u00f3lo lo quita si es seguido por un car\u00e1cter<br \/>\nalfab\u00e9tico o un numero. No lo quita si es seguido por un s\u00edmbolo, un espacio,<br \/>\no se aparece en el fin de una frase traducida.<\/p>\n<p><a name=\"Opcion_--statusbar\"><\/a>Opci\u00f3n <tt>\u2013statusbar<\/tt>:<\/p>\n<p>La opci\u00f3n <tt>\u2013statusbar<\/tt> es muy experimental. Siempre haga copias de reserva de<br \/>\nsus archivos antes que usarla. Esta opci\u00f3n s\u00f3lo sirve con programas que<br \/>\ntienen comentarios autom\u00e1ticos parecidos del men\u00fa y de la barra del estado.<br \/>\nPor ejemplo en el programa AbiWord, cada frase traducida de men\u00fa tiene un<br \/>\ncomentario autom\u00e1tico de \u201cMENU_LABEL_\u2026\u201d y cada frase traducida de la barra<br \/>\nde estado tiene un comentario autom\u00e1tico de \u201cMENU_STATUSLINE_\u2026\u201d.\u00a0 En este<br \/>\ncaso, puede buscar la correspondiente barra del estado y insertar el msgstr<br \/>\ndel men\u00fa. Sin embargo muchos programas no nombran sus men\u00fas y barras del<br \/>\nestado en una manera parecida y la opci\u00f3n \u2013statusbar no sirve bien.\u00a0 Si<br \/>\nquiere borrar el msgstr existente y reemplazarlo con el msgstr del men\u00fa, debe<br \/>\nusar la opci\u00f3n \u2013overwrite.\u00a0 Si quiere insertarlo en ambos msgstr y en el<br \/>\ncomentarios, usa las opciones \u2013comment con \u2013msgstr.\u00a0 Puede usar la opci\u00f3n<br \/>\n\u2013bilingual con \u2013statusbar, pero va a pegar el msgstr del statusbar con<br \/>\nmsgstr del men\u00fa.<\/p>\n<p>Como en las inserciones de \u2013bilingual, la opci\u00f3n \u2013strip sin especificar la<br \/>\nCADENA, quitar\u00e1 signos \u201c&amp;\u201d de las inserciones de \u2013statusbar. Ya que barras de<br \/>\nestado no tienen teclas de acceso directo, se aconseja que use \u2013strip con la<br \/>\nopci\u00f3n \u2013statusbar. Tambi\u00e9n puede usar la opci\u00f3n \u2013replace sin especificar<br \/>\nBUSQUEDA y REEMPLAZO para quitar variables en inserciones de \u2013statusbar. A<br \/>\nveces mensajes en la barra de estado contienen variables, pero es m\u00e1s seguro<br \/>\nreemplazar todas las variables primero, y luego a\u00f1adir las variables<br \/>\nnecesarias.<\/p>\n<p><a name=\"Procesando_Directorios\"><\/a>Procesando Directorios:<\/p>\n<p>Si ORIGINAL-PO y TRASLACIONES-PO son directorios, instrans procesar\u00e1 todos los<br \/>\narchivos en el directorio ORIGINAL-PO con la extensi\u00f3n \u201c.po\u201d, \u201c.pot\u201d, o \u201c.pox\u201d.<br \/>\nInstrans buscar\u00e1 archivos del mismo nombre en el directorio TRASLACIONES-PO<br \/>\npara insertar las frases traducidas.\u00a0 Los archivos en ORIGINAL-PO que no tengan<br \/>\nla extensi\u00f3n \u201c.po\u201d, \u201c.pot\u201d, o \u201c.pox\u201d ser\u00e1n solamente copiado al archivo<br \/>\nNUEVO-PO sin insertar nada. Tambi\u00e9n los archivos PO en el directorio<br \/>\nORIGINAL-PO que no tengan un correspondiente archivo con el mismo nombre en<br \/>\nTRASLACIONES-PO ser\u00e1n solamente copiado.<\/p>\n<p>Sin embargo, los archivos en TRASLACIONES-PO que no tengan un correspondiente<br \/>\narchivo en ORIGINAL-PO, no ser\u00e1n copiado. Tambi\u00e9n, los subdirectorios en ambos<br \/>\nORIGINAL-PO y TRASLACIONES-PO ser\u00e1n ignorado y no copiado.\u00a0 Si quiere procesar<br \/>\nlos subdirectorios, use la opci\u00f3n \u2013recursive.<\/p>\n<p>Por ejemplo, si tiene los directorios \u201ces-ES\u201d y \u201cfr-FR\u201d abajo y quiere insertar<br \/>\nlas frases francesas en los archivos PO espa\u00f1oles, puede usar el mandato<br \/>\nsiguiente:<\/p>\n<pre>php instrans.php es-ES fr-FR es-fr<\/pre>\n<p>Va a producir un directorio NUEVO-PO \u201ces-fr\u201d as\u00ed:<\/p>\n<pre>ORIGINAL-PO:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0TRASLACIONES-PO:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0NUEVO-PO:\r\n\/es-ES\/\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/fr-FR\/\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/es-fr\/\r\n\/intro.po\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/intro.po\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/intro.po\r\n\/readme.txt\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/readme.txt\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/readme.txt\u00a0 [s\u00f3lo copiado]\r\n\/main.po\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/main.po\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/main.po\r\n\/main.c\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/main.c\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/main.c\u00a0\u00a0\u00a0\u00a0\u00a0 [s\u00f3lo copiado]\r\n\/files.pot\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/files.pot\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/files.pot\r\n\/makelist.po\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/different.po\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/makelist.po [s\u00f3lo copiado]\r\n\/win\/\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/win\/\r\n\/frontend.po\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/frontend.po\r\n\/search.po\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/search.po\r\n<\/pre>\n<p>Solamente los archivos \u201cintro.po\u201d, \u201cmain.po\u201d, y \u201cfiles.pot\u201d en el directorio<br \/>\n\u201ces-ES\u201d fueron procesado porque tienen una extensi\u00f3n PO y hay archivos<br \/>\ncorrespondientes en el directorio \u201cfr-FR\u201d con el mismo nombre. Los otros<br \/>\narchivos en \u201ces-ES\u201d fueron copiado al directorio \u201ces-fr\u201d sin inserciones. El<br \/>\nsubdirectorio \u201cwin\u201d fue ignorado y no fue copiado. Anota que el archivo<br \/>\n\u201cdifferent.po\u201d en el directorio \u201cfr-FR\u201d no fue copiado tampoco porque no<br \/>\nhab\u00eda un correspondiente archivo en \u201ces-ES\u201d.<\/p>\n<p><a name=\"Opcion_--search\"><\/a>Opci\u00f3n \u2013search<\/p>\n<p>Si quiere insertar frases traducidos de qualquier archivo en un directorio,<br \/>\nuse la opci\u00f3n \u2013search.\u00a0 Por ejemplo, el mandato:<br \/>\n<tt>php instrans.php \u2013search es-ES\/intro.po fr-FR intro-mess.po<\/tt><\/p>\n<p>Instrans va a buscar frases traducidas en todos los archivos PO en el<br \/>\ndirectorio \u201cfr-FR\u201d y insertarlas en el archivo nuevo \u201cintro-mess.po\u201d. Si quiere<br \/>\nprocesar todos los archivos en es-ES as\u00ed, buscando en todos los archivos de<br \/>\nfr-FR, usa el mandato:<br \/>\nphp instrans.php \u2013search es-ES fr-FR es-fr<\/p>\n<p>Si quiere buscar en el subdirectorio \u201cwin\u201d tambi\u00e9n, usa la opci\u00f3n \u2013recursive.<\/p>\n<p><a name=\"Errores_de_Sintaxis\"><\/a>Errores de Sintaxis:<\/p>\n<p>Si instrans encuentra un error de sintaxis en un objeto PO, va a a\u00f1adirlo al<br \/>\nconteo de errores de sintaxis y mostrarlo al fin de procesamiento. En modo<br \/>\n\u2013verbose, instrans muestra mensajes de aviso y el numero de l\u00ednea en<br \/>\nel archivo donde puede encontrar los errores de sintaxis. En TRASLACI\u00d3NES-PO<br \/>\nlos errores de sintaxis son contado, pero no ser\u00e1n escrito al NUEVO-PO. Si un<br \/>\nerror de sintaxis es encontrado en ORIGINAL-PO y es un problema sencillo como<br \/>\nuna l\u00ednea no terminada en comillas, instrans lo arreglar\u00e1 al escribir al<br \/>\nNUEVO-PO.\u00a0 Si instrans no puede determinar donde ponga un elemento PO en<br \/>\nNUEVO-PO, escribir\u00e1 \u201cSYNTAX ERROR: \u201d y la l\u00ednea con el error de sintaxis en el<br \/>\ncomentario de traductor del objeto PO m\u00e1s cerca. Si su archivos PO tienen<br \/>\nerrores, se recomienda que use la opci\u00f3n \u2013verbose para que Ud. pueda encontrar<br \/>\ny corregir los errores de sintaxis despu\u00e9s.<\/p>\n<p>Por ejemplo, si instrans encuentra los siguientes objetos PO in ORIGINAL-PO:<\/p>\n<pre>#: po\/ap_Id.h.h:283\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 (Problemas:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 )\r\nmsGiD \u201cEdit\u201d\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 (msgid no debe tener letras may\u00fasculas\u00a0\u00a0\u00a0\u00a0 )\r\nmsgstr\u201dEditar\u201d\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 (falta espacio entre msgstr y \u201ceditar\u201d\u00a0\u00a0\u00a0\u00a0 )\r\n\r\n#: po\/ap_Id.h.h:281\r\nmsgi \u201cHelp\u201d\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 (Debe ser \u201cmsgid\u201d\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 )\r\nmsgstr \u201cAyuda\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 (L\u00ednea debe terminar en comillas.\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 )\r\n\r\nEl NUEVO-PO ser\u00e1 escrito:\r\n\r\n#: po\/ap_Id.h.h:283\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 (C\u00f3mo problemas son tratado:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 )\r\nmsgid \u201cEdit\u201d\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 (Arreglado sin mensaje de aviso\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 )\r\nmsgstr \u201cEditar\u201d\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 (Arreglado sin mensaje de aviso\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 )\r\n\r\n# SYNTAX ERROR: msgi \u201cHelp\u201d\u00a0\u00a0\u00a0 (L\u00ednea es traslado al comentario con aviso )\r\n#: po\/ap_Id.h.h:281\r\nmsgstr \u201cAyuda\u201d\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 (Arreglado con un mensaje de aviso\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 )\r\n<\/pre>\n<p>Instrans transformar\u00e1 \u2018msGiD \u201cEdit\u201d\u2018 a \u2018msgid \u201cEdit\u201d\u2018 y \u2018msgstr\u201dEditar\u201d\u2018<br \/>\na \u2018msgstr \u201cEditar\u201d\u2018 sin emitir un aviso o contar un error. Sin embargo en el<br \/>\nsegundo objeto PO, instrans contar\u00e1 errores de sintaxis y emitir\u00e1 avisos en<br \/>\nel modo \u2013verbose sobre las comillas faltadas en \u2018msgstr \u201cAyuda\u2019 y la palabra<br \/>\ndesconocida \u201cmsgi\u201d.\u00a0 En el caso de \u2018msgstr \u201cAyuda\u2019, instrans a\u00f1adir\u00e1 las<br \/>\ncomillas finales autom\u00e1ticamente, pero no sabr\u00e1 que hacer con \u2018msgi \u201cHelp\u201d\u2018.<br \/>\nVa a proveer un aviso y poner la l\u00ednea en el comentario de traductor despu\u00e9s<br \/>\nde las palabras \u2018SYNTAX ERROR: \u2018.<\/p>\n<p><a name=\"Valor_de_devuelto\"><\/a>Valor de devuelto:<\/p>\n<p>Instrans devuelve un valor de 0 si procesa sin problemas. Devuelve 1-20 si<br \/>\nencuentra errores abriendo y escribiendo archivos o procesando datos. Devuelve<br \/>\n20-40 si encuentra errores en los argumentos pasado por el usuario. Devuelve<br \/>\n41-42 en el caso de la opci\u00f3n \u2013help o \u2013formato.<\/p>\n<p><a name=\"Por_que_demora_tanto\"><\/a><br \/>\n\u00bfPor qu\u00e9 demora tanto?<\/p>\n<p>Instrans puede demorar mucho al procesar archivos grandes. En mi maquina<br \/>\ngasta 6 segundos procesando el archivo PO de AbiWord que contiene 1500 frases<br \/>\ntraducidas, pero gasta mucho m\u00e1s tiempo en maquinas m\u00e1s viejas. Originalmente<br \/>\ninstrans fue escrito para ser una aplicaci\u00f3n de web en PHP. Dentro de poco fue<br \/>\nclaro que fuese m\u00e1s eficaz de descargarlo de internet y utilizarlo en casa.<br \/>\nAunque PHP es bueno para servir paginas web, procesa muy lentamente grandes<br \/>\ncantidades de datos en archivos. Si esto te molesta mucho, sientese libre para<br \/>\nre-escribir el c\u00f3digo en una lengua m\u00e1s r\u00e1pida.<\/p>\n<p><a name=\"Por_que_usa_tanta_memoria\"><\/a><br \/>\n\u00bfPor qu\u00e9 usa tanta memoria?<\/p>\n<p>Si procesa archivos PO grandes con millares de objetos o usa la opci\u00f3n \u2013search<br \/>\ncon una grande cantidad de archivos, instrans utiliza mucha memoria para<br \/>\ncargar todos los objetos encontrados.\u00a0 Por defecto puede utilizar un m\u00e1ximo de<br \/>\n40MB de memoria, pero puede aumentarla. Cambie el mandato<br \/>\nini_set(\u2018memory_limit\u2019, \u201940M\u2019);\u00a0 en el archivo \u201cinstrans-header.php\u201d.<\/p>\n<p><a name=\"EJEMPLOS_DE_USO\"><\/a><br \/>\nEJEMPLOS DE USO<\/p>\n<p><a name=\"Ejemplo_Basico\"><\/a><br \/>\nEjemplo Basico:<\/p>\n<p>Una traductora de quechua boliviano ha traducido algunas frases en el archivo<br \/>\n<tt>qu-BO.po<\/tt>, pero quiere convertir las frases no traducidas al castellano.<br \/>\nElla descarga el archivo es-ES.po y entrega el mandato:<\/p>\n<pre>php instrans.php qu-BO.po es-ES.po<\/pre>\n<p>Si <tt>qu-BO.po<\/tt> se aparece as\u00ed:<\/p>\n<pre>#. MENU_LABEL_FILE_OPEN\r\n#: po\/tmp\/ap_String_Id.h.h:285\r\nmsgid \u201c&amp;Open\u201d\r\nmsgstr \u201c&amp;Kichay\u201d\r\n\r\n#. MENU_STATUSLINE_FILE_OPEN\r\n#: po\/tmp\/ap_String_Id.h.h:1692\r\nmsgid \u201cOpen an existing document\u201d\r\nmsgstr \u201cKasqa\u00f1a documentota kichay\u201d\r\n\r\n#\u00a0 \u00bfPuede traducir \u201cPrint\u201d como \u201c\u00f1it\u2019isqa\u201d? \u00bfQu\u00e9 es \u201cLayout\u201d?\r\n#. MENU_LABEL_VIEW_PRINT\r\n#: po\/tmp\/ap_String_Id.h.h:309\r\nmsgid \u201cP&amp;rint Layout\u201d\r\nmsgstr \u201c\u201d\r\n\r\n#. MSG_ConfirmSave\r\n#: po\/tmp\/ap_String_Id.h.h:1995\r\n#, c-format\r\nmsgid \u201c\u201d\r\n\u201cSave changes to document %s \\nbefore closing?\u201d\r\nmsgstr \u201c\u201d\r\n\u201c\u00bfUqjinayachisqaykita \u00ab%s\u00bb archivopi \\njallch\u2019ayta munankichu?\u201d\r\n<\/pre>\n<p>y <tt>es-ES.po<\/tt> se aparece as\u00ed:<\/p>\n<pre>#. MENU_LABEL_FILE_OPEN\r\n#: po\/tmp\/ap_String_Id.h.h:285\r\nmsgid \u201c&amp;Open\u201d\r\nmsgstr \u201c&amp;Abrir\u201d\r\n\r\n#. MENU_STATUSLINE_FILE_OPEN\r\n#: po\/tmp\/ap_String_Id.h.h:1692\r\nmsgid \u201cOpen an existing document\u201d\r\nmsgstr \u201cAbrir un documento existente\u201d\r\n\r\n#. MENU_LABEL_VIEW_PRINT\r\n#: po\/tmp\/ap_String_Id.h.h:309\r\nmsgid \u201cP&amp;rint Layout\u201d\r\nmsgstr \u201cDi&amp;se\u00f1o de impresi\u00f3n\u201d\r\n\r\n#. MSG_ConfirmSave\r\n#: po\/tmp\/ap_String_Id.h.h:1995\r\n#, c-format\r\nmsgid \u201c\u201d\r\n\u201cSave changes to document %s \\nbefore closing?\u201d\r\nmsgstr \u201c\u201d\r\n\u201c\u00bfDesea guardar los cambios al documento %s \\nantes de cerrar?\u201d\r\n<\/pre>\n<p>Entonces instrans insertar\u00e1 la frase \u201cDi&amp;se\u00f1o de impresi\u00f3n\u201d pero no tocar\u00e1<br \/>\nlos otros objetos PO. El archivo qu-BO.po ser\u00e1 sobre-escrito as\u00ed:<\/p>\n<pre>#. MENU_LABEL_FILE_OPEN\r\n#: po\/tmp\/ap_String_Id.h.h:285\r\nmsgid \u201c&amp;Open\u201d\r\nmsgstr \u201c&amp;Kichay\u201d\r\n\r\n#. MENU_STATUSLINE_FILE_OPEN\r\n#: po\/tmp\/ap_String_Id.h.h:1692\r\nmsgid \u201cOpen an existing document\u201d\r\nmsgstr \u201cKasqa\u00f1a documentota kichay\u201d\r\n\r\n#\u00a0 \u00bfPuede traducir \u201cPrint\u201d como \u201c\u00f1it\u2019isqa\u201d? \u00bfQu\u00e9 es \u201cLayout\u201d?\r\n#. MENU_LABEL_VIEW_PRINT\r\n#: po\/tmp\/ap_String_Id.h.h:309\r\nmsgid \u201cP&amp;rint Layout\u201d\r\nmsgstr \u201cDi&amp;se\u00f1o de impresi\u00f3n\u201d\r\n\r\n#. MSG_ConfirmSave\r\n#: po\/tmp\/ap_String_Id.h.h:1995\r\n#, c-format\r\nmsgid \u201c\u201d\r\n\u201cSave changes to document %s \\nbefore closing?\u201d\r\nmsgstr \u201c\u201d\r\n\u201c\u00bfUqjinayachisqaykita \u00ab%s\u00bb archivopi \\njallch\u2019ayta munankichu?\u201d\r\n<\/pre>\n<p><a name=\"Ejemplo_con_--comment\"><\/a>Ejemplo con <tt>\u2013comment<\/tt>:<\/p>\n<p>La primera traductora pasa el archivo PO a otro traductor de quechua boliviano<br \/>\nque no puede leer ingl\u00e9s, \u00e9l quiere insertar traslaciones castellanas como<br \/>\ncomentarios en un archivo nuevo llamado qu-BO-tras.po:<\/p>\n<pre>php instrans.php \u2013comment=\u201des-ES\u201d qu-BO.po es-ES.po qu-BO-tras.po<\/pre>\n<p>El nuevo archivo <tt>qu-BO-tras.po<\/tt> contendr\u00e1:<\/p>\n<pre>#\u00a0 [es-ES] \u201c&amp;Abrir\u201d\r\n#. MENU_LABEL_FILE_OPEN\r\n#: po\/tmp\/ap_String_Id.h.h:285\r\nmsgid \u201c&amp;Open\u201d\r\nmsgstr \u201c&amp;Kichay\u201d\r\n\r\n#\u00a0 [es-ES] \u201cAbrir un documento existente\u201d\r\n#. MENU_STATUSLINE_FILE_OPEN\r\n#: po\/tmp\/ap_String_Id.h.h:1692\r\nmsgid \u201cOpen an existing document\u201d\r\nmsgstr \u201cKasqa\u00f1a documentota kichay\u201d\r\n\r\n#\u00a0 [es-ES] \u201cDi&amp;se\u00f1o de impresi\u00f3n\u201d\r\n#\u00a0 \u00bfPuede traducir \u201cPrint\u201d como \u201c\u00f1it\u2019isqa\u201d? \u00bfQu\u00e9 es \u201cLayout\u201d?.\r\n#. MENU_LABEL_VIEW_PRINT\r\n#: po\/tmp\/ap_String_Id.h.h:309\r\nmsgid \u201cP&amp;rint Layout\u201d\r\nmsgstr \u201c\u201d\r\n\r\n#\u00a0 [es-ES] \u201c\u201d\r\n#\u00a0 [es-ES] \u201c\u00bfDesea guardar los cambios al documento %s \\nantes de cerrar?\u201d\r\n#. MSG_ConfirmSave\r\n#: po\/tmp\/ap_String_Id.h.h:1995\r\n#, c-format\r\nmsgid \u201c\u201d\r\n\u201cSave changes to document %s \\nbefore closing?\u201d\r\nmsgstr \u201c\u201d\r\n\u201c\u00bfUqjinayachisqaykita \u00ab%s\u00bb archivopi \\njallch\u2019ayta munankichu?\u201d<\/pre>\n<p><a name=\"Ejemplo_con_--bilingual\"><\/a>Ejemplo con <tt>\u2013bilingual<\/tt>:<\/p>\n<p>Muchos quechua-hablantes no son acostumbrado a leerlo y necesita ver la<br \/>\ntraducci\u00f3n en espa\u00f1ol al lado del quechua. Los traductores deciden<br \/>\nhacer una versi\u00f3n biling\u00fce.\u00a0 Las frases quechuas ser\u00e1n separados de las<br \/>\nfrases espa\u00f1oles por \u201d ][ \u00ab.\u00a0 Las opciones &#8211;strip y &#8211;replace son usado<br \/>\npara quitan cualquier signo \u00ab&amp;\u00bb o variable que pueda causar errores. Las<br \/>\nopciones &#8211;verbose y &#8211;log son usado para que los traductores tengan un<br \/>\nregistro de cada lugar donde las variables hab\u00eda sido reemplazado por<br \/>\n\u00ab@#@x@#@\u00bb.\u00a0 Despu\u00e9s ellos revise el archivo PO y borrar los \u00ab@#@x@#@\u00bb.<\/p>\n<pre>php instrans.php -v --log --strip --replace --bilingual=\" ][ \"\r\nqu-BO.po es-ES.po qu-es-BO.po<\/pre>\n<p>El archivo qu-es-BO.po contendr\u00e1:<\/p>\n<pre>#. MENU_LABEL_FILE_OPEN\r\n#: po\/tmp\/ap_String_Id.h.h:285\r\nmsgid \"&amp;Open\"\r\nmsgstr \"&amp;Kichay ][ Abrir\"\r\n\r\n#. MENU_STATUSLINE_FILE_OPEN\r\n#: po\/tmp\/ap_String_Id.h.h:1692\r\nmsgid \"Open an existing document\"\r\nmsgstr \"Kasqa\u00f1a documentota kichay ][ Abrir un documento existente\"\r\n\r\n#\u00a0 \u00bfPuede traducir \"Print\" como \"\u00f1it'isqa\"? \u00bfQu\u00e9 es \"Layout\"?\r\n#. MENU_LABEL_VIEW_PRINT\r\n#: po\/tmp\/ap_String_Id.h.h:309\r\nmsgid \"P&amp;rint Layout\"\r\nmsgstr \"Di&amp;se\u00f1o de impresi\u00f3n\"\r\n\r\n#. MSG_ConfirmSave\r\n#: po\/tmp\/ap_String_Id.h.h:1995\r\n#, c-format\r\nmsgid \"\"\r\n\"Save changes to document %s \\nbefore closing?\"\r\nmsgstr \"\"\r\n\"\u00bfUqjinayachisqaykita %s archivopi \\njallch'ayta munankichu?\"\r\n\"\\n\u00bfDesea guardar los cambios al documento @#@s@#@ \\nantes de cerrar?\"\r\n<\/pre>\n<p>El separador \u00bb ][ \u00bb no es insertado antes de la frase \u00abDi&amp;se\u00f1o de impresi\u00f3n\u00bb<br \/>\nporque el msgstr fue vaci\u00f3. Las dos frases en Msg_ConfirmSave son separados<br \/>\npor un car\u00e1cter de nueva l\u00ednea (\\n) en lugar de \u00bb ][ \u00bb porque el msgstr ya<br \/>\ncontiene una nueva l\u00ednea. En este caso la ventana de di\u00e1logo se expande por<br \/>\nel tama\u00f1o del mensaje, pero en otros casos el tama\u00f1o de ventana es fijado y<br \/>\nuna traslaci\u00f3n de l\u00edneas m\u00faltiples no es posible. Hay que chequear cada<br \/>\nventana de di\u00e1logo para verificar que quepa la frase biling\u00fce.<\/p>\n<p>Porque el msgstr de MENU_LABEL_VIEW_PRINT no ten\u00eda un signo \u00ab&amp;\u00bb (s\u00edmbolo de<br \/>\nacceso directo), el \u00ab&amp;\u00bb no es quitado el la frase insertado \u00abDi&amp;se\u00f1o de<br \/>\nimpresi\u00f3n\u00bb, pero en el caso de MENU_LABEL_FILE_OPEN, el msgstr ya ten\u00eda un \u00ab&amp;\u00bb.<br \/>\nPor eso, \u00ab&amp;\u00bb es quitado de la frase \u00ab&amp;Abrir\u00bb antes que insertarla.<\/p>\n<p><a name=\"Ejemplo_con_--statusbar\"><\/a>Ejemplo con <tt>--statusbar<\/tt>:<\/p>\n<p>Los traductores quechuas no les gustan los men\u00fas biling\u00fces porque son muy<br \/>\ngrandes y inc\u00f3modos. Por eso ellos deciden poner las traslaciones espa\u00f1oles<br \/>\nde los men\u00fas en la barra del estado. Si un usuario no sabe lo que significa<br \/>\nun men\u00fa puede mirar abajo en la barra del estado. Ellos usan la opci\u00f3n<br \/>\n&#8211;overwrite para borrar y reemplazar los msgstr existentes.\u00a0 Las opciones<br \/>\n&#8211;strip y &#8211;replace son usado para quitar cualquier signo \u00ab&amp;\u00bb y<br \/>\nvariable que pueda causar problemas.<\/p>\n<pre>php instrans --strip --replace --overwrite --verbose\r\n  --statusbar=\"MENU_LABEL_\" \"MENU_STATUSLINE_\"\r\n  qu-BO.po es-ES.po qu-BO-prueba.po<\/pre>\n<p>Entonces el archivo nuevo qu-BO-pruebe.po contendr\u00e1:<\/p>\n<pre>#. MENU_LABEL_FILE_OPEN\r\n#: po\/tmp\/ap_String_Id.h.h:285\r\nmsgid \"&amp;Open\"\r\nmsgstr \"&amp;Kichay\"\r\n\r\n#\u00a0 [es-ES] MENU: \u201c&amp;Abrir\u201d\r\n#. MENU_STATUSLINE_FILE_OPEN\r\n#: po\/tmp\/ap_String_Id.h.h:1692\r\nmsgid \u201cOpen an existing document\u201d\r\nmsgstr \u201cAbrir\u201d\r\n\r\n#\u00a0 \u00bfPuede traducir \u201cPrint\u201d como \u201c\u00f1it\u2019isqa\u201d? \u00bfQu\u00e9 es \u201cLayout\u201d?\r\n#. MENU_LABEL_VIEW_PRINT\r\n#: po\/tmp\/ap_String_Id.h.h:309\r\nmsgid \u201cPrint Layout\u201d\r\nmsgstr \u201c\u201d\r\n\r\n#. MSG_ConfirmSave\r\n#: po\/tmp\/ap_String_Id.h.h:1995\r\n#, c-format\r\nmsgid \"\"\r\n\"Save changes to document %s \\nbefore closing?\"\r\nmsgstr \u201c\u201d\r\n\u201c\u00bfUqjinayachisqaykita %s archivopi \\njallch\u2019ayta munankichu?\u201d\r\n<\/pre>\n<p>Ahora cuando el rat\u00f3n pasa sobre Abrir en el men\u00fa Archivo, el usuario de<br \/>\neste software va a ver \u201cKichay\u201d en el men\u00fa y \u201cAbrir\u201d en la barra de estado.<\/p>\n<p><a name=\"Ejemplo_con_--search\"><\/a>Ejemplo con <b><tt>\u2013search<\/tt><\/b>:<\/p>\n<p>Los traductores bolivianos deciden traducir un programa nuevo al quechua,<br \/>\npero el programa todav\u00eda no hab\u00eda traducido en espa\u00f1ol.\u00a0 No hay un archivo PO<br \/>\ndonde pueden sacar las frases espa\u00f1oles.\u00a0 Sin embargo, ellos observan que otros<br \/>\nprogramas hab\u00edan sido traducido en espa\u00f1ol y esos otros programas tienen muchas<br \/>\nde las mismas frases como su programa nuevo.\u00a0 Quieren insertar esas frases<br \/>\nsacado de muchos programas en los comentarios en el nuevo archivo qu-es.po.<br \/>\nEllos recolectan todos los archivos PO de esos programas en el directorio<br \/>\n\u201ces-muchos\u201d y en sus subdirectorios y entregan el mandato:<\/p>\n<pre>php instrans.php -c \u2013search \u2013recursive qu-BO.po es-muchos qu-es.po<\/pre>\n<p><a name=\"LICENCIA_Y_AUTOR\"><\/a>LICENCIA Y AUTOR<\/p>\n<p>\u2014***\u2014<br \/>\nLicencia:\u00a0 Actual versi\u00f3n de GNU Licencia de Protecci\u00f3n General (GPL)<br \/>\nque se puede leer en: <a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.gnu.org\/\">http:\/\/www.gnu.org<\/a><br \/>\nAutor:\u00a0\u00a0\u00a0\u00a0 Amos Batto (amosbatto@yahoo.com), <a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.ciber-runa.net\/ab\">http:\/\/www.ciber-runa.net\/ab<\/a><br \/>\nCreado:\u00a0\u00a0\u00a0 22 Jun 2006, \u00daltima actualizaci\u00f3n: 20 sep 2007<\/p>\n<p>Este script fue escrito como parte del proyecto <a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.ciber-runa.net\/\">www.ciber-runa.net<\/a><br \/>\npara ayudar gente crear traducciones de software en lenguas ind\u00edgenas.<\/p>\n<p>Por favor mande reportajes de fallos\u00a0o sus sugerencias a amosbatto@yahoo.com<br \/>\npara que yo pueda mejorar instrans.php. Gracias.<br \/>\n\u2014***\u2014<\/p>\n<p><a name=\"DOCUMENTACION_EN_OTRAS_LENGUAS\"><\/a>DOCUMENTACI\u00d3N EN OTRAS LENGUAS<\/p>\n<p>Versiones de este documento:<br \/>\n<a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/instrans\/instrans-0.2\/readme-en.txt\">readme-en.txt<\/a> \u00a0<a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/instrans\/instrans-0.2\/readme-en.html\">readme-en.html<\/a> (English)<br \/>\n<a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/instrans\/instrans-0.2\/readme-es.txt\">readme-es.txt<\/a> \u00a0<a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/instrans\/instrans-0.2\/readme-es.html\">readme-es.html<\/a> (espa\u00f1ol)<br \/>\n<a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/instrans\/instrans-0.2\/readme-pt.txt\">readme-pt.txt<\/a> \u00a0<a href=\"https:\/\/web.archive.org\/web\/20161105095151\/http:\/\/www.illa-a.org\/instrans\/instrans-0.2\/readme-pt.html\">readme-pt.html<\/a> (portugu\u00eas)<\/p>\n<p>Porque instrans es designado para ayudar traductores que no puedan leer ingl\u00e9s,<br \/>\nestamos buscando para gente que pueda traducir este programa en otras lenguas.<br \/>\nEspecialmente necesitamos una traducci\u00f3n francesa.<\/p>\n<p>\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-<br \/>\nNota: Si Ud. no puede ver todo este documento en DOS, necesita aumentar el<br \/>\n\u201cTama\u00f1o del b\u00fafer de pantalla\u201d en la pesta\u00f1a \u201cDise\u00f1o\u201d. Puede encontrarlo bajo<br \/>\n\u201cPropiedades\u201d en el men\u00fa [c:\\] a la izquierda arriba de la ventana de DOS.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>instrans.php &#8211; Script para Insertar Traslaciones English | Castellano | Portugu\u00eas Descargar: https:\/\/github.com\/amosbatto\/instrans Manual en castellano: Instalaci\u00f3n Descripci\u00f3n Formato Notas Usando \u2013replace con \u2013bilingual inserciones Usando \u2013strip con \u2013bilingual inserciones Opci\u00f3n \u2013statusbar Procesando Directorios Opci\u00f3n \u2013search Errores de sintaxis Valor &hellip; <a href=\"http:\/\/www.illaa.org\/index.php\/instrans-php\/\">Continuar leyendo <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"http:\/\/www.illaa.org\/index.php\/wp-json\/wp\/v2\/pages\/76"}],"collection":[{"href":"http:\/\/www.illaa.org\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/www.illaa.org\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/www.illaa.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.illaa.org\/index.php\/wp-json\/wp\/v2\/comments?post=76"}],"version-history":[{"count":5,"href":"http:\/\/www.illaa.org\/index.php\/wp-json\/wp\/v2\/pages\/76\/revisions"}],"predecessor-version":[{"id":488,"href":"http:\/\/www.illaa.org\/index.php\/wp-json\/wp\/v2\/pages\/76\/revisions\/488"}],"wp:attachment":[{"href":"http:\/\/www.illaa.org\/index.php\/wp-json\/wp\/v2\/media?parent=76"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}