Mein Problem ist, dass gettext nicht funktioniert.
Ich nutze:
Windows 10, 64 bit
XAMPP (xampp-portable-win32-5.6.30-1-VC11-installer.exe mit PHP Version 5.6.30)
Netbeans (netbeans-8.2-html-windows-x64.exe)
die gettext-Libraries, installiert mit gettext-0.14.4.exe
PoEdit (Poedit-2.0.2-setup.exe)
Laut phpinfo() ist GetText Support enabled unter XAMPP.
Zu PoEdit habe ich keine Anleitung gefunden und mich daher zum Test erstmal an dem Beitrag unter https://www.sitepoint.com/localizing-php-applications-1/ orientiert, der aber offensichtlich eine ältere Version von PoEdit benutzt.
Dies sind meine Files gemäß obiger Anleitung in TestI18N/Locale/en_US/LC_MESSAGES:
LC_MESSAGES.po:
- Code: Select all
msgid ""
msgstr ""
"Project-Id-Version: TestI18N\n"
"POT-Creation-Date: 2017-06-13 17:39+0200\n"
"PO-Revision-Date: 2017-06-13 17:54+0200\n"
"Last-Translator: \n"
"Language-Team: mh\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.2\n"
"X-Poedit-Basepath: ../../../../initializr-template-master\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Language: en_US\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-SearchPath-0: .\n"
# Test token 1
msgid "HELLO WORLD"
msgstr "Hello World"
# Test token 2
msgid "TEST_TRANSLATION"
msgstr "Testing translation..."
LC_MESSAGES.mo:
- Code: Select all
Þ• 4 L ` a m ² ~ 1 = HELLO WORLD TEST_TRANSLATION Project-Id-Version: TestI18N
POT-Creation-Date: 2017-06-13 17:39+0200
PO-Revision-Date: 2017-06-13 17:54+0200
Last-Translator:
Language-Team: mh
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Generator: Poedit 2.0.2
X-Poedit-Basepath: ../../../../initializr-template-master
Plural-Forms: nplurals=2; plural=(n != 1);
Language: en_US
X-Poedit-SourceCharset: UTF-8
X-Poedit-SearchPath-0: .
Hello World Testing translation...
(In der ersten und letzten Zeile von LC_MESSAGES.mo stehen noch diverse Sonderzeichen (von Notepad als NUL angegeben, die hier aber nicht angezeigt werden.).
Die Testdatei test-locale.php sieht so aus und liegt im Verzeichnis TestI18N:
- Code: Select all
<?php
//phpinfo();
// I18N support information here
$language = "en_US";
putenv("LANG=" . $language);
setlocale(LC_ALL, $language);
// Set the text domain as "messages"
$domain = "messages";
bindtextdomain($domain, "Locale");
bind_textdomain_codeset($domain, 'UTF-8');
textdomain($domain);
echo _("HELLO_WORLD");
echo gettext("HELLO_WORLD");
?>
Beim Aufruf von test-locale.php wird nur HELLO_WORLD angezeigt, nicht aber die Übersetzung. Das ist so unter XAMPP als auch wenn ich das Projekt auf den Server hochlade.
Ich sitze schon ein paar Tage an dem Problem, ohne eine Lösung zu finden.
Hat jemand einen Tip für mich?
Müssen noch Pfade eingestellt werden oder fehlt etwas in der php.ini?
Gruß,
Henry