views:

706

answers:

2

There's some tutorials out there for gettext (w/ Poedit)... unfortunately, it's mostly for a UNIX environment. And even more unfortunate is that I am running my WAMP server on Windows XP (but I am developing for a UNIX environment) and none of the tutorials can get gettext working properly for me. From the man page (http://us3.php.net/manual/en/book.gettext.php), it appears that it's a different process on a Windows environment. I've tried out some of the solutions in the comments but I still can't get it to work! Please, I've spent many hours on this, hopefully someone can point me in the right direction to get this thing to work! (and I'm sure there are others out there who share my frustration). So far with my setup, I'm only getting output "Hello World!" whereas I should be getting the translated string.

Here is my setup/code so far:

<?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"); 

?>

Folder structure

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

Please advise! Thanks for your time :)

A: 

I didn't made a full investigation on this but I'm sure that one of your mistakes is that you used invalid locale codes - even on Windows the locales codes are the same - these are gettext locales and they are cross platform.

Please try to use just "de" as locale code, it should work. Also be sure that your PHP has gettext extension installed and activated (check with phpinfo).

Sorin Sbarnea
The locale codes are different in Windows, check the `gettext()` entry on the PHP Manual.
Alix Axel
+2  A: 

I ran into problems while working with gettext on my local machine, and after some search i found this page which solved my problem: http://www.kipras.com/getting-gettext-to-work-in-apache-on-windows/96

I am quoting from the web page:

On Linux servers (or any other servers apart windows), the way to do it is this:

setlocale(LC_MESSAGES, “en_US”);

The correct way to set locality on windows is this:

putenv(“LC_ALL=en_US”);
wesamly