Ich habe ein .po und eine .mo Datei in einem Ordner, deren Adresse /locale/nld_nld/LC_MESSAGES/. Die Namen beider Dateien sind Nachrichten. Ich habe versucht, den folgenden Code zu verwenden:Wie po/Pot-Dateien mit PHP zu verwenden?
try.php:
<?php
require_once("Localization.php");
echo _("Hello World!");
?>
die Localization.php geht hier:
<?php
$locale = "nld_nld";
if (isSet($_GET["locale"])) $locale = $_GET["locale"];
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("messages", "./locale");
bind_textdomain_codeset("messages", 'UTF-8');
textdomain("messages");
?>
Sowohl die try.php und die Lokalisierungsdateien sind im selben Verzeichnis. Außerdem verwende ich xampp
. Ich implementierte auch die phpinfo();
. In der Tabelle, vor 'GetText Support', wurde enabled erwähnt. Die messages.po und die messages.mo Dateien sind gültige Dateien, die ich mit poEdit erstellt habe. Ich bin ein Windows-Benutzer. Als ich jedoch try.php geöffnet habe, hat es einfach Hallo Welt wiederholt! (Nicht seine übersetzte Zeichenfolge auch. Habe ich übersetzt die .po Datei 100% (nach poEdit
). Aber ich bin nicht immer die Ergebnisse. Eine kleine Hilfe auf diesem würde geschätzt.
Dank ! im Voraus
Die Textdomäne() ist normalerweise der letzte Funktionsaufruf (tatsächlich könnte es vor jedem Aufruf von gettext aka _() benötigt werden, wenn Sie mit mehreren Domänen arbeiten.Zuerst binden Sie alle Domänen, dann wählen Sie eine aus. – eckes
In Ihrem Beispiel verwenden Sie zwei verschiedene Domain-Namen 'es' und 'messages-es'. Das funktioniert möglicherweise nicht (und normalerweise haben Sie nicht den Sprachenbezeichner im Dateinamen, wie er stattdessen vom Verzeichnis definiert wird). Also "/full/path/here/application/locale/es_ES/LC_MESSAGES/messages.mo" ist der Dateiname der Domain "messages" und der LC_TYPE es_ES. – eckes