Cita:
Iniciado por Nano_
Se me ocurre que podrías manejarlo de la siguiente manera:
Nano_, muchas gracias hombre. El código funciona a la perfección y además te fuiste por una vía que ni siquiera se me pasó por la cabeza. Cuando lo implementé anoche estuve un rato viendo cómo lo hiciste y francamente recibí una buena lección. Gracias hermano.
Abimael -como siempre- me dejó con la boca abierta. Código más reducido imposible. Mis respetos compa, muchas gracias. Algún día haré vainas así jejeje. Me encantó cómo además agrupas singular/plural. Aunque actualmente estoy probando full con éste, la cosa quedó así por ahora:
Código PHP:
Ver original$archivo = str_replace( basename($_SERVER['PHP_SELF']) , '' , $_SERVER['SCRIPT_FILENAME']) . '/lang/prueba.po'; $leer = file($archivo, FILE_IGNORE_NEW_LINES
); $html = null;
$htm = null;
$txt = null;
$cont = 0;
foreach($leer as $l) {
$valor[$cont] = null;
switch($txt[0]) {
case 'msgid':
$html[$cont] = $l;
break;
case 'msgstr':
$html[$cont] = $l;
break;
case 'msgstr[0]':
// validacion si la posicion anterior es msgid_plurarl
if($valor[$cont-1] == "msgid_plural"){
$html[$cont] = $html[$cont-1];
$html[$cont-1] = $l;
} else
$html[$cont] = $l;
break;
case 'msgid_plural':
$html[$cont] = $l;
$valor[$cont] = "msgid_plural";
break;
case 'msgstr[1]':
$html[$cont] = $l;
break;
}
$cont++;
}
Ésta es la salida HTML en la que estoy trabajando. Es un desastre por ahora pero va bien:
Código PHP:
Ver originalforeach($html as $k => $h) {
//$h = trim($h , '"');
// $reemp = array('msgid_plural' => 'PO' , 'msgstr' => 'T' , 'msgid' => 'O' , 'msgstr[1]' => 'PT' , 'msgstr[0]' => 'TS');
$reemp2 = array('msgid_plural' => 'Plural' , 'msgid' => 'Singular' ); // $v1 = strtr($v[0] , $reemp);
$v2 = strtr($v[0] , $reemp2);
if($v1 == 'O' or $v1 == 'PO' )
echo '
<tr>
<td class="tipo">'. $v2 .'</td>
<td class="original">
<p>'. $e .'</p>
</td>';
if($v1 == 'T' or $v1 == 'TS' or $v1 == 'PT' )
echo '
<td>
<div id="dato-'. $k .'">'. $e .'</div>
</td>
</tr>';
}
}