Gettext funktioniert nicht über php-cli, funktioniert aber in php-apache

8

Der Code, den ich ausführe, sieht wie folgt aus:

%Vor%

Das Ergebnis durch apache2 lautet:

%Vor%

Was ist wie wir wollen.

Es läuft durch cli:

%Vor%

Was wäre richtig gewesen wenn wir Englisch benutzt hätten. Das 'd' ist in der englischen Übersetzung in Großbuchstaben und in der Quelle in der Kleinschreibung (Aus dem Zusammenhang heraus erscheint es ein bisschen komisch)

Also funktioniert gettext, da es die Zeichenfolge übersetzen kann, aber irgendwie ignoriert es, dass ich das Gebietsschema im Skript änderte und die .po-Datei aus dem englischen Verzeichnis wählte.

Falls Sie sich fragen, warum ich in einem CLI-Skript Gebietsschemata benötige: Das Skript wird verwendet, um Rechnungen per E-Mail zu versenden.

Ich benutze: Ubuntu 12.10, PHP 5.4.6-1ubuntu1, Apache 2.2.22 und gettext 0.18.1.

    
CodeTower 04.11.2012, 16:54
quelle

2 Antworten

19

Sie müssen die Umgebungsvariable LANGUAGE zurücksetzen:

putenv ("SPRACHE=");

Hat mich eine Weile gebraucht, um es herauszufinden.

    
edlerd 28.11.2012, 15:11
quelle
1

Sie müssen überprüfen, ob die bindtextdomain () dieselbe Ressource von php-cli und php-apache zeigt. Ich schlage vor,

  1. echo den Rückgabewert der bindtextdomain () und sieh sie.
  2. versuche, "./locale" durch den absoluten Pfad zu ersetzen (z. B. "/ var / www / yourproject / locale") und überprüfe, ob es funktioniert.
akky 04.11.2012 17:19
quelle