Frage

Es gibt einige Tutorials gibt für gettext (w / Poedit) ... leider ist es meist für eine UNIX-Umgebung. Und noch unglücklicher ist, dass ich auf Windows XP meinen WAMP Server leite (aber ich für eine UNIX-Umgebung entwickle) und keine der Übungen richtig für mich bekommen gettext arbeiten. Aus der Manpage ( http://us3.php.net/manual/en/ book.gettext.php ), scheint es, dass es ein anderer Prozess auf einer Windows-Umgebung. Ich habe einige der Lösungen in den Kommentaren ausprobiert, aber ich kann immer noch nicht bekommen es an die Arbeit! Bitte, ich viele Stunden dafür ausgegeben haben, können hoffentlich jemand mich in die richtige Richtung weisen diese Sache an die Arbeit! (Und ich bin sicher, dass es andere gibt, die meine Frustration teilen). Bis jetzt mit meinem Setup, bin ich nur Ausgang „Hallo Welt!“ Bekommen während ich die übersetzte String bekommen werden sollte.

Hier ist mein Setup / Code so weit:

<?php
// test.php
if (!defined('LC_MESSAGES')) {
    define('LC_MESSAGES', 6);

}
$locale = "deu_DEU"; // apparently the locales are different on a WINDOWS platform

putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("greetings", ".\locale");
textdomain("greetings");


echo _("Hello World"); 

?>

Ordnerstruktur

root:     C:\Program Files\WampServer 2\www
test.php: C:\Program Files\WampServer 2\www\site
.po:      C:\Program Files\WampServer 2\www\site\locale\deu_DEU\LC_MESSAGES\greetings.po
.mo:      C:\Program Files\WampServer 2\www\site\locale\deu_DEU\LC_MESSAGES\greetings.mo

Bitte geben! Vielen Dank für Ihre Zeit:)

War es hilfreich?

Lösung 6

Es war, weil ich nicht die locales installiert hatte.

Andere Tipps

Ich lief in Probleme, während sie mit gettext auf meinem lokalen Rechner zu arbeiten, und nach einiger Suche fand ich diese Seite, die mein Problem gelöst: http://www.kipras.com/getting -gettext-to-work-in-apache-on-Fenster / 96

Ich zitiere von der Webseite:

  

Auf Linux-Servern (oder andere Server   abgesehen Fenster), die Art und Weise, es zu tun ist   folgt aus:

setlocale(LC_MESSAGES, “en_US”);
     

Der richtige Weg Ort zu setzen auf   Fenster ist dies:

putenv(“LC_ALL=en_US”);

Ich hatte das gleiche Problem, und verschwendete fast einen Tag oder so darauf. Schließlich fand ich eine sehr einfache Lösung, nämlich deinstallieren WAMP Server (Version 2.1) und Installieren Sie eine neuere Version (WampServer 2.1e - 32 Bit). Es ist seltsam, aber es löste das Problem vollständig.

Hier ist der Beispielcode, der für mich gearbeitet:

<?php

    $locale = "deu_DEU";

    putenv("LC_ALL=$locale");
    setlocale(LC_ALL, $locale);

    bindtextdomain("greetings", "./locale");
    textdomain("greetings");

    echo _("Hello World");

?>

Hoffe, es hilft.

habe ich nicht eine umfassende Untersuchung zu diesem Thema gemacht, aber ich bin sicher, dass einer Ihrer Fehler ist, dass Sie ungültige locale Codes verwendet - auch unter Windows die locales Codes gleich sind - das sind gettext locales und sie sind Cross-Plattform .

Bitte versuchen Sie es einfach „de“ als Gebietsschema-Code zu verwenden, sollte es funktionieren. Auch sicher sein, dass Ihre PHP gettext-Erweiterung installiert und aktiviert (Check mit phpinfo) hat.

könne zu spät sein, aber ich habe ähnliche Probleme, bis ich „kurzen offenen tag“ in meinen WAMP PHP-Einstellungen aktiviert

Dies ist die Lösung, die für mich gearbeitet. Dies funktioniert auf dem neuesten wampserver. (Quelle: http://www.extradrm.com/blog/?p=1035)

1) Download php-gettext von hier: https://launchpad.net/php-gettext/ + herunterladen und entpacken

2) Fügen Sie die folgenden Dateien in dem Paketstamm im selben Ordner wie Test-language.php gefunden: - gettext.inc - gettext.php - streams.php

3) Öffnen Sie die Datei php.ini und kommentieren Sie wampserver php_gettext.dll:

;extension=php_gettext.dll

4) Dies ist die neue Testdatei Test language.php

<?php
error_reporting(E_ALL | E_STRICT);

// define constants
define('PROJECT_DIR', realpath('./'));
define('LOCALE_DIR', 'C:/wamp/www/test/locale');
define('DEFAULT_LOCALE', 'es_ES');

require_once('gettext.inc');

$supported_locales = array('en_US', 'sr_CS', 'de_CH','es_ES');
$encoding = 'UTF-8';

$locale = (isset($_GET['lang']))? $_GET['lang'] : DEFAULT_LOCALE;

//var_dump($locale);die();

// gettext setup
T_setlocale(LC_MESSAGES, $locale);
// Set the text domain as 'messages'
$domain = 'messages';
bindtextdomain($domain, LOCALE_DIR);
// bind_textdomain_codeset is supported only in PHP 4.2.0+
if (function_exists('bind_textdomain_codeset'))
bind_textdomain_codeset($domain, $encoding);
textdomain($domain);

echo gettext("HELLO_WORLD");
?>

Nach all dies müssen Sie locale Ordner erstellen, en_US (oder einer anderen Sprache) Ordner, LC_MESSAGES Ordner und dann die messages.po Datei setzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top