1. die zeile
$fp = fopen($cfg["path"]["contenido"].$cfg['path']['locale'].$i18nLanguage."/LC_MESSAGES/contenido.po","r");
dient ansich ja nur dazu um zu überprüfen ob die sprachdatei wirklich existiert.
nun kann es aber passieren das eine datei sagen wir mal 50 mal auf die funktion i18nEmulateGettext zugreifen muss.
mein vorschlag: wie wärs die variable global zu speichern und diese überprüfung auszulassen wenn sie bereits gesetzt wurde ?! wär nur logisch.
2. die zeile
$transFile = implode('',file($cfg["path"]["contenido"].$cfg['path']['locale'].$i18nLanguage."/LC_MESSAGES/contenido.po"));
macht ja nichts anderes als den array (den file erzeugt) zeile für zeile (mittels implode) wieder zusammenzufügen damit man einen string hat.
ähm... sagen wir mal das 50 mal zu machen bringts irgendwie auch nicht (ebenfalls die variable speichern)
nur ne idee... obs schneller ist`, keine ahnung, mir kommts aber so vor, aber ich glaub schon...
ob man jetzt beides seperat oder in einem macht ist an sich egal, ich habs zusammen gefasst. der auszug unten ersetzt nur den ersten teil der funktion.
Code: Alles auswählen
function i18nEmulateGettext ($string)
{
global $cfg, $i18nLanguage, $transFile;
/* Bad thing, gettext is not available. Let's emulate it */
if (!$transFile) {
$fp = fopen($cfg["path"]["contenido"].$cfg['path']['locale'].$i18nLanguage."/LC_MESSAGES/contenido.po","r");
if ($fp === false)
{
return $string;
}
fclose($fp);
$transFile = implode('',file($cfg["path"]["contenido"].$cfg['path']['locale'].$i18nLanguage."/LC_MESSAGES/contenido.po"));
}
kommentarzeilen (alle beginnen mit #) aus der contenido.po entfernen. (die datei hat dann nur mehr eine größe von 25 kb)