The following example works on Mac OS X with Apache, i.e. I get the translated string echoed back. But on Ubuntu with lighttpd I get the original text 'Inactive account'. I've tried all sorts of combinations of environment varialbes without any luck. It's not file permissions either because I can echo out the contents of the .mo file.
<?php //$locale = 'sv_SE.UTF-8'; $locale = 'sv_SE'; $dir = dirname(__FILE__); // File permission is apparantly not a problem as this works... //echo file_get_contents($dir . '/sv_SE/LC_MESSAGES/flattr.mo'); putenv("LANG=$locale"); putenv("LANGUAGE=$locale"); putenv("LC_ALL=$locale"); putenv("LC_MESSAGES=$locale"); setlocale(LC_ALL, $locale); setlocale(LC_MESSAGES, $locale); //setlocale(LANG, $locale); //setlocale(LANGUAGE, $locale); bindtextdomain('flattr', $dir); //bind_textdomain_codeset("flattr", 'UTF-8'); textdomain('flattr'); echo _("Inactive account"); ?>
Anyone have any ideas?
I was facing the same problem. I'll describe the things I did to fix it on Ubuntu 10.10.
1) make sure you have 'gettext' installed,
$ sudo apt-get install gettext
Alternatively, you can install 'php-gettext' if 'gettext' cannot be installed. The package 'php-gettext' is not required if you already have 'gettext' installed.
2) Then generate the locale for your language. In this example I'll use 'sv_SE'. Look up the supported locales in '/usr/share/i18n/SUPPORTED',
You'll find multiple lines that start with 'sv_SE',
sv_SE.UTF-8 UTF-8 sv_SE ISO-8859-1 sv_SE.ISO-8859-15 ISO-8859-15
This means you have multiple options for generating the locale for sv_SE. To generate the locale for the default character set, run the following command,
$ sudo locale-gen sv_SE
If you want to generate that locale for the UTF-8 character set, run this command,
$ sudo locale-gen sv_SE.UTF-8
Restart Apache after generating locales,
sudo /etc/init.d/apache2 restart
3) Finally, update your PHP script to match the locale you generated. If you generated the locale for 'sv_SE',
But if you generated the UTF-8 equivalent of that locale, use,
All should work now.
The content is written by members of the stackoverflow.com community.
It is licensed under cc-wiki