Es gibt verschiedene Ansätze für die Internationalisierung von PHP-Projekten. Zu den gängigen, gut funktionierenden Lösungen zählt die Verwendung von .po-Sprachdateien in Verbindung mit gettext oder Zend Framework. Problematisch ist allerdings die gleichzeitige Verwendung von Template-Engines wie Smarty, weil die üblichen Werkzeuge wie xgettext zwar PHP-Code aber keine Templates durchsuchen können. Dies führt dazu, dass man aus den Templates nicht automatisch Zeichenketten für .PO Dateien extrahieren kann.

Das kostenfreie Tool gettext_smarty hift hier aus. Es sucht im Template nach Blöcken mit selbst-definierbaren Keywords, beispielsweise Keyword „t“ in {t}übersetze mich{/t}. Man kann das Tool als Parser in der beliebten Software Poedit einbinden, so dass automatisch alle Templates durchsucht werden und die .po-Dateien auch automatisch zusammengeführt werden.

parser_setup

Im PHP-Code definiert man dazu passend eine Block-Funktion, die den Inhalt des Blocks übersetzt (hier mit dem gettext-Alias):

function smarty_block_t($params, $content) 
{
    if( ! is_null($content) ) {
      $out = _($content);
      return stripslashes($out);
    } 
}

Download Das gettext_smarty Tool lässt sich hier downloaden.