Use PHP Gettext without having to install locales
Try gettext-php. It is a drop-in replacment for gettext written in PHP. It was originally done for WordPress, I think, because WP needs to run on shared hosts which are not always configured for every locale. This seems to me to be your issue as well.
It has a bit of performance hit, but it has not been an issue for me at all.
Here is the solution:
$lang = 'de'; //debugsetlocale( LC_ALL, 'C.UTF-8' );bindtextdomain( 'default', PATH . "/locale/$lang" );bind_textdomain_codeset( 'default', 'UTF-8' );textdomain( 'default' );
The only difference between that and the example I posted at the bottom of my answer is that it uses C.UTF-8
not just C
.
I'll be doing more testing of this, and if it works cross-platform, and will update this answer if I find out anything else.
For anyone still having some problem with this, you can try the code below, which i get from here:http://php.net/manual/en/function.gettext.php#58310
It solved me on freebsd server, having no extra locale install (fr_FR and my_MY)This code is also useful when you have some problem with the gettext cache.
<?phpfunction initialize_i18n($locale) { $locales_root="/app/php/locale"; // change This to where you locale folder at putenv('LANG='.$locale); setlocale(LC_ALL,""); setlocale(LC_MESSAGES,$locale); setlocale(LC_CTYPE,$locale); $domains = glob($locales_root.'/'.$locale.'/LC_MESSAGES/*.mo'); $current = basename($domains[0],'.mo'); $timestamp = preg_replace('{messages-}i','',$current); bindtextdomain($current,$locales_root); textdomain($current);}?>